前面有寫過一篇瀑布流的采集方法,今天在添加一個(gè)POST方法來采集Ajax刷新頁面的教程。
之前的文章請(qǐng)看:火車頭采集動(dòng)態(tài)加載Ajax數(shù)據(jù)(無分頁瀑布流網(wǎng)站)
如果遇到POST方法來架子Ajax數(shù)據(jù),這和我之前寫的是兩個(gè)類型,瀑布流是直接刷新出數(shù)據(jù)的頁面。
采集網(wǎng)站分析
采集任何一個(gè)新站前我們都要對(duì)他進(jìn)行一番分析才好下手。
列表頁分析
這個(gè)網(wǎng)站的列表頁,前面并不是通過Ajax加載的。CTRL+U可以直接看到列表內(nèi)容,通過瀏覽器也看不到相關(guān)請(qǐng)求地址。


因?yàn)榱?xí)慣原因,我直接看了下尾頁列表頁。然后順手CTRL+U看看網(wǎng)站代碼結(jié)構(gòu)有沒有大的變化。防止后期采集出錯(cuò)。結(jié)果就發(fā)現(xiàn)無法看到列表內(nèi)容。瀏覽器可以看到一個(gè)通過post請(qǐng)求的地址。


這時(shí)候就意識(shí)到這網(wǎng)站列表頁可能后面的應(yīng)該全是通過Ajax加載的。
通過笨方法,手動(dòng)訪問頁面看看Ajax加載大概是哪些。最后找到大概從2200頁左右開始Ajax加載。
那我們采集的時(shí)候,前面的列表頁就可以使用普通方式去采集(速度更快)。
2200頁開始到尾頁就通過post請(qǐng)求Ajax頁面數(shù)據(jù)。
抓包獲取Post數(shù)據(jù)
這個(gè)Ajax地址我在瀏覽器看不到任何跟頁碼有關(guān)的數(shù)據(jù)。最后只能使用抓包工具看一下詳細(xì)的請(qǐng)求內(nèi)容了。

使用抓包工具Fiddler
Fiddler下載地址:OneDrive-Fiddler-Setup_v5.0.20204.45441.zip
安裝設(shè)置完成后我們打開瀏覽器。重新訪問一下采集頁面,F(xiàn)iddler會(huì)抓到很多請(qǐng)求地址。
查看分析Post數(shù)據(jù)
Ctrl+F 我們搜索那個(gè)Ajax地址

Fiddler會(huì)以黃色將搜索到的結(jié)果顯示出來,我們點(diǎn)擊一下他。

在Fiddler右側(cè)會(huì)顯示這個(gè)請(qǐng)求地址的相關(guān)詳細(xì)信息。

信息頂部可以看到是post請(qǐng)求方法。往下拉。
可以看到有我們請(qǐng)求的頁碼相關(guān)內(nèi)容。

訪問不同頁碼的頁面,經(jīng)過研究發(fā)現(xiàn)規(guī)律。

currentPageIndex的值和頁碼相關(guān),值等于頁碼減一。我們?cè)L問6139頁時(shí),currentPageIndex值是6138。
這就找到了規(guī)律,我們打開火車頭采集器。
火車頭采集器配置分頁設(shè)置
起始網(wǎng)址填入Ajax請(qǐng)求地址

點(diǎn)“高級(jí)模式”。

點(diǎn)“分頁設(shè)置”,http請(qǐng)求方式“post”。

把我們Fiddler抓包獲取的內(nèi)容填進(jìn)去。

將currentPageIndex值的內(nèi)容替換成火車頭采集器的“分頁”標(biāo)簽。

下面填入頁碼。
頁面地址是從2200到6140,上面我們分析得出post請(qǐng)求內(nèi)容的currentPageIndex值是實(shí)際頁碼減一。所以這里面我們填2199到6139.

網(wǎng)址獲取選項(xiàng)設(shè)置
為了篩選出我們需要的內(nèi)容,我們?cè)O(shè)置一下網(wǎng)址獲取選項(xiàng)。
打開瀏覽器F12開發(fā)工具,預(yù)覽一下Ajax獲取的內(nèi)容。

可以看到鏈接的形式是
<ahref=\"/chengrenzikao/20200611152022.html\">自考成考報(bào)名條件有哪些?
完整的鏈接地址是
https://域名/chengrenzikao/20200611152022.html
那我們就可以使用下面的規(guī)則提取地址。

我們測(cè)試一下網(wǎng)址采集。
測(cè)試網(wǎng)址采集
點(diǎn)擊測(cè)試可能提示“post請(qǐng)求必須選擇網(wǎng)頁編碼”我們?cè)诨疖囶^其他設(shè)置中將編碼選為“UTF8”即可。

可以看到已經(jīng)正確獲取到了鏈接。不放心可以復(fù)制鏈接實(shí)際訪問一下看看是否正確。

注意事項(xiàng)
采集過程注意運(yùn)行線程和請(qǐng)求間隔時(shí)間。教程在測(cè)試時(shí)因?yàn)殚_的線程較多,頻率過高導(dǎo)致對(duì)方網(wǎng)站開啟了防CC設(shè)置。拉黑了我一個(gè)服務(wù)器IP,此教程寫完用了兩臺(tái)服務(wù)器。
我們實(shí)際采集可以只開1個(gè)線程,并設(shè)置合適的間隔時(shí)間,比如1000ms到1500ms左右。
本文來自2號(hào)站長網(wǎng),轉(zhuǎn)載請(qǐng)注明出處:https://www.zz2zz.com/331414.html
申請(qǐng)創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!