天天看點

在使用Selenium抓去網頁的時候,使網頁的滑動條滾動&&解決Selenium抓去資料不完整問題

在這裡插入代碼片在我們使用爬蟲爬取資料的時候,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)
           

以上為個人見解,如果和您的想法有所出入歡迎留言共同探讨。