小豬的Python學習之旅 —— 8.爬蟲實戰:刷某部落格站點的訪問量

w39發表於2021-09-09

引言

Python併發的文章還在肝,比較乏味,寫個爬蟲小指令碼玩玩,想起之前
在某部落格站點看到,一個人釋出的渣渣文章,半個小時不到2W訪問量,
還連續幾篇都是,然後一個留言或者點讚的都沒有,比較多人看的鴻洋
的部落格,一篇文章掛了3個月也才1w3的訪問量,想想都知道是爬蟲刷的,
小豬頓時正義感作祟,忍不住向他們的客服進行了舉報,然而石沉大海,
並沒有得到任何的回覆,不禁感嘆,時過境遷,物是人非,唉...

圖片描述

最近偶爾有次點出了排行版,看到了這樣的東西???

圖片描述

賣優惠券的都沒人管了...臥槽,這還能忍,這樣對得起那些
辛辛苦苦肝出一篇技術文章的大佬和萌新嗎?

圖片描述

刷訪問量指令碼誰不會寫,而且這個部落格站點不用登入就算一次
訪問量,寫個無限迴圈,然後換著ip去訪問部落格就行了。
具體的流程:

  • 1.抓取你部落格所有的文章URL存起來;
  • 2.準備一堆代理ip(西刺很多都不行,可以上網買5塊2W個高匿代理ip);
  • 3.while True:換著ip,隨機訪問自己的一篇文章;

是的,就是這麼簡單,沒有任何反爬蟲或者懲罰,之前那個人
已經大搖大擺的刷到每篇文章5W多訪問量。所以我選擇搬到掘金...


1.寫一個自己的常用模組

在寫簡單爬蟲的時候,有一些很常用的程式碼段,比如發起一個
請求,然後獲得一個Response;下載圖片;讀寫檔案等,其實
都可以寫到一個py檔案裡(有點像Android裡的工具類),然後要
用到的時候呼叫下就可以了,使用的時候import下你的這個模組
然後就可以用了。比如小豬隨手寫的一個簡易模組:

圖片描述

部分程式碼

圖片描述

這些都可以自己定製,這樣你在寫爬蟲的時候就方便多了。

另外,小豬閒暇沒事也會爬點小東西練練手,初學者可以也跟著
試試,相關指令碼都丟到我的Gayhub上了,按需自取:

圖片描述


2.編寫刷訪問量指令碼

Step 1:獲取部落格的所有連結

開啟:http://blog.csdn.net/coder_pig?viewmode=list
滑動到底部,可以發現有這個東西,要做的就是拿到每一頁的
url,然後處理頁面拿到所有的文章連結都存起來,然後隨手
點開第二頁,發現url變成:
http://blog.csdn.net/zpj779878443/article/list/2
所以我們只需拿到總共有多少頁就可以了,然後自行拼接URL:

圖片描述

瀏覽器f12開啟Elements,Ctrl+f搜 尾頁,直接就定位到了

圖片描述

然後全域性搜下這個papelist,發現也是唯一的,接下來好辦
了,處理下href,拿到最後的頁碼:

圖片描述

接著就是看下每個列表頁的頁面結構,獲取所有的文章url,
然後寫入到一個檔案裡了:

就選我們剛剛開啟的第二頁吧,同樣開啟:Elements,隨手
搜個:小豬淺談Android螢幕適配,就可以定位到:

圖片描述

然後點結點,翻上去,不難找到:

圖片描述

同樣,搜下article_list,同樣是唯一的,拿到這個div,然後
獲取class='link_title'span,然後拿到裡面的a標籤就可以了:

圖片描述

執行下這個方法,可以看到目錄下生成了csdn_articles_file.txt
點開就可以看到我們所有文章的url了:

圖片描述

第一步完成~

Step 2訪問網頁

這裡就非常簡單了,換ip,然後給文章發起請求,你連read()
方法都不用執行,另外,這裡還可以新增計數,當返回碼為
200的時候,說明是一次順利的訪問,計數+1,程式碼很簡單:

圖片描述

Step 3:執行程式碼

這裡很簡單,先判斷文章列表檔案是否存在,不存在遍歷,
然後載入檔案裡所有的資料到列表,接著While無限迴圈,
然後random隨機取出一個訪問即可!

圖片描述

執行後開始計數就說明成功了,開啟自己的部落格頁面放著
過一會在兒再重新整理看看訪問量是否增加了就知道了:

圖片描述


3.把指令碼丟到伺服器上跑

自己的電腦總不可能24小時開著是吧,費電,比如我一般下班
就會關電腦,如果想你的指令碼可以24小時不間斷執行,可以丟
到伺服器上,一百來塊就可以買個普通的玩玩了,有興趣自行
百度阿里雲,騰訊雲虛擬主機之類的。

一般是透過ssh命令連結到我們的遠端主機終端

ssh root@主機ip,然後輸入下主機密碼即可連結

圖片描述

然後你可以透過一些ftp工具把自己的指令碼檔案丟到
伺服器上,然後ssh終端執行下python3 xxx.py就可以了。

圖片描述

但是有個問題是,如果你按了ctrl+c或者關閉了這個ssh終端
你的這個指令碼就會停止!所以你需要以後臺程式的方式執行
你的這個Python指令碼,可以使用nobup命令。
鍵入這樣的命令:

nohup python3 -u xxx.py > xxx.out 2>&1 &

解釋下:

  • nohup 和 最後的& 包著的就是讓命令在後臺執行,比如你直接
    寫nohup python3 xxx.py &就可以了
  • > xxx.out 代表將輸出資訊輸出到xxx.out日誌檔案中
  • 2>&1 將資訊變成標準輸出,把錯誤資訊也輸入到日誌檔案中
    0代表stdin,1代表stdout,2代表stderr

這樣執行後,會返回一個pid(程式id):

圖片描述

然後你可以透過tail命令跟蹤日誌輸出:

tail -f xxx.out

圖片描述

覺得跑得差不多了想停掉程式執行,只需執行下述命令把程式
殺掉,比如kill -9 19267

kill -9 pid

如果忘記了pid也沒什麼,可以透過下述命令找到:

ps -ef | grep python3

圖片描述

然後kill掉就可以了。另外上面那個執行了8:28分鐘的就是
我昨晚睡覺前執行的指令碼,tail看一波日誌檔案:

圖片描述

怒刷31W訪問量,這個就不說了...


4.Python3 ssl模組找不到

把指令碼丟伺服器上,python3執行的時候一直安裝不了ssl模組,
真是莫名其妙,pip3 install ssl,死命就是報錯,後面搜了
下網上的資料, 先執行下面的兩個命令裝點東西:

apt-get install openssl
apt-get libssl-dev

裝上後還是不行,然後發現是要去改下python3資料夾裡的
程式碼,然後重新make,cd到下面的路徑,vim編輯Setup檔案:

cd ../../usr/lib/python/Python-3.6.4/Modules 
vim Setup

把對應這個部分的改成下述這個樣子,然後esc,鍵入
:wq儲存。

圖片描述

然後一次執行下述命令(如果最後名利提示許可權不夠,可在make前加-H)

cd ..
sudo ./configure
sudo make
sudo make install

make完後,命令列鍵入python3,進入到python3 ide,import下ssl
沒報錯就說明安裝成功了!

圖片描述


小結

本節學習了編寫自己的模組,編寫刷訪問量指令碼,以及如何把自己的
指令碼丟到伺服器上以後臺程式的方式執行。

圖片描述

其實刷那麼多的訪問量又有什麼用,寫部落格的初衷就是分享和記錄
自己的學習歷程,不知何時開始,我們開始熱衷於追求所謂的閱讀量,
點贊數,評論數,然後各種標題黨,雞湯...現在大多數的人對於短平
快結果立竿見影的事情趨之若鶩,而對需要沉下心長時間積澱的事卻
避之而唯恐不及,這可能就是浮躁吧。


本節原始碼下載


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/854/viewspace-2804402/,如需轉載,請註明出處,否則將追究法律責任。

相關文章