參考網(wǎng)站:http://blog.csdn.net/u011475134/article/details/70198533
目標(biāo):爬取熱點新聞的標(biāo)題,鏈接(圖1)

核心技術(shù):所爬內(nèi)容為JS加載,需要從網(wǎng)頁響應(yīng)中找到JS腳本返回的JSON數(shù)據(jù)
(1)找到JS請求的數(shù)據(jù)接口
1.打開網(wǎng)頁調(diào)試工具

2.發(fā)現(xiàn)所需要的數(shù)據(jù)在文件名含“?category“字段的文件中,篩選,只顯示該種文件
(2)觀察數(shù)據(jù)源文件的url構(gòu)成規(guī)律
滾動滾動條,出現(xiàn)了幾個新的目標(biāo)文件。列表觀察


觀察上表得出,url地址中只有黃色部分的參數(shù)會改變。
①max_behot_time和max_behot_time_tmp的值相等
②點擊首頁中左邊標(biāo)題欄“熱點”按鈕時,max_behot_time和max_behot_time_tmp的值為0
③而每一個max_behot_time和max_behot_time_tmp的值都可以在上一個文件內(nèi)容中得出

④AS和CP的值,每一次都發(fā)生改變,并沒有規(guī)律。因此推測是根據(jù)一定加密算法算出的。參考的指出可以在網(wǎng)頁HTML源碼中找到加密算法。但是我并沒有找到.....所以加密算法是直接使用參考網(wǎng)站所提供的函數(shù):

(3)編寫代碼:
由于看不懂參考網(wǎng)站的代碼,自己寫了個簡單版的......





(4)測試
結(jié)果:每一次爬取的內(nèi)容都是一樣的

1.猜測A:網(wǎng)站自帶反爬機(jī)制,需要降低爬取速度
實施:在get_item(url)中添加time.sleep(5)
結(jié)果:失敗
2.猜測B:網(wǎng)站自帶反爬機(jī)制,需要加header
實施:在get_item(url)中添加

結(jié)果:失敗
3.猜測C:網(wǎng)站自帶反爬機(jī)制,需要加cookies
實施:根據(jù)參考網(wǎng)站,只與cookies中的tt_webid參數(shù)有關(guān)

結(jié)果:成功
完整代碼:"https://github.com/caiyingyi/toutiao.git"