在這裡插入代碼片在我們使用爬蟲爬取資料的時候,Selenium是一個很好的工具。Selenium是一個Web的自動化測試工具,最初是為網站自動化測試而開發的,Selenium 可以直接運作在浏覽器上,它支援所有主流的浏覽器(包括PhantomJS這些無界面的浏覽器),可以接收指令,讓浏覽器自動加載頁面,擷取需要的資料,甚至頁面截屏。
在我們抓取資料的時候,可能會經常發現這樣的情況:頁面上明明有60個我們想要的資料,但是我們實際抓取的時候卻僅僅隻有30條或者20條。這是為什麼呢?實際上網站為了提高性能,往往在頁面上隻會展示一部分資料。當我們浏覽完目前的資料的時候,會往下拉動滑動條,這時會發送ajax請求,展現另外一部分。但是我們在抓取的時候網頁沒有下滑,沒有發送請求,是以另外一部分内容沒有抓取到。解決辦法如下:
def huadong(lists):
# 滑動條滾動
# 定義初始的滑動條的位置
step = 0
# 想抓取的資料的清單長度
list_len = len(lists)
# 計算下滑的高度(0表示不下滑,10000表示在最下邊)
hua_dong_shu = 10000 // list_len
step += hua_dong_shu
# 執行js,使頁面下滑
js = "var q=document.documentElement.scrollTop={}".format(step)
self.driver.execute_script(js)
以上為個人見解,如果和您的想法有所出入歡迎留言共同探讨。