scrapy爬取動態頁面

簡介

現在在整理原來寫過的東西,這是一個比較簡單的爬蟲項目,就是進行動態頁面的爬取,主要的難點是實現模擬點擊。

查看目標網站

查看目標網站:

在這裏插入圖片描述
在這裏插入圖片描述
但是這不是我們的目標,我們要爬取的是點擊熱搜榜之後的熱搜話題:
是這樣的:
在這裏插入圖片描述
然後才能爬取,所以這是一個爬取動態頁面的項目。

這裏我用到了selenium庫進行模擬操作,首先使用該庫模擬點擊然後進行數據的爬取。
要在scrapy中爬取動態頁面需要添加中間件,也就是說再middleware中添加模擬操作。

代碼部分

在這裏插入圖片描述
添加如下代碼:

在這裏插入圖片描述
在這裏插入圖片描述
DAYCOUNT設置在setting.py中作爲一個全局變量,用來控制爬取幾天的熱搜。
這裏使用的是xpath用來定位:
在這裏插入圖片描述
然後右鍵:
在這裏插入圖片描述
然後我們能希望能找到歷史的熱搜數據,所有又模擬了多次鼠標點擊:

在這裏插入圖片描述
大致的順序就是先點擊”熱搜榜”,然後點擊”實時”,再然後選擇”熱搜歷史”。分別對應下面代碼中的三次模擬點擊事件:

在這裏插入圖片描述
每一次操作爲了等待網頁反應的時間所以都使用了sleep函數。

然後爲了能得到更多的數據,還模擬了鼠標下拉的這一個動作:

在這裏插入圖片描述
最後得到網頁源代碼,然後返回html文件。
在這裏插入圖片描述
這就是中間件模塊的全部工作。

然後是parse解析函數,這裏同樣使用了xpath的方法,具體操作見上述對於xpath的copy操作,然後我們選擇‘title’‘hotcounts’和‘rank’這三個維度的數據,具體的定義在item.py中已經寫完。

在這裏插入圖片描述
在這裏插入圖片描述

爲了能做到循環爬取固定天數,所以還有循環機制:

在這裏插入圖片描述
存儲
數據的存儲由pipeline模塊完成:

在這裏插入圖片描述
我直接寫入到txt文件下。
運行後得到結果:
在這裏插入圖片描述

哈哈,從我爬的結果就知道這是比較久之前的了,做個小總結,也和大家共勉~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章