爬蟲雜談(二)使用Selenium抓取動態網站

很多電商網站內容是動態載入的,requests無法抓取全部內容,內容是隨著用戶向下瀏覽而逐步載入的。Selenium可以抓取動態內容,提供針對瀏覽器的很多操作。

1、使用requests抓取

import requestsnurl = https://www.jd.com/nr = requests.get(url).textnprint(len(r))nwith open(jd.html,w,encoding=gbk) as f:n f.write(r)n

抓取到108399

用chrome 打開jd.html,如下圖

說明並沒有抓取到全部內容

2、使用Selenium抓取

from selenium import webdrivernimport timenndef scroll(n,i): n return "window.scrollTo(0,(document.body.scrollHeight/{0})*{1});".n format(n,i)nnurl = https://www.jd.com/nfirefox = webdriver.Firefox()nfirefox.maximize_window()nfirefox.get(url)nnn = 10nfor i in range(0,n+1):n s = scroll(n,i)n print(s)n firefox.execute_script(s)n time.sleep(2)nnprint(len(firefox.page_source))nwith open("jd2.html",w,encoding="utf-8",errors=ignore) as f:n f.write(firefox.page_source)n

打開「jd2.html」,往下滑動,發現內容都在,就是圖片沒有顯示,右鍵查看源代碼,和京東網站上面的一樣。

3、總結

可以明顯發現Selenium比requests抓取內容的差異,當然也可以利用Ajax+requests,喜歡用哪種都可以。

firefox.page_source就和requests.get類似,可以使用bs4進行解析,當然Selenium也有自帶的元素定位,各有各的優缺點。看需求了。

Selenium可以做得東西很多

關於爬蟲可以看看靜覓的博客Python爬蟲實戰八之利用Selenium抓取淘寶匿名旺旺 | 靜覓

關於模擬登錄Selenium+Python自動更新知乎首頁內容 - 知乎專欄

關於元素定位 [python爬蟲] Selenium常見元素定位方法和操作的學習介紹

======================================================================個人微信:zhang7350

推薦閱讀:

從零開始寫Python爬蟲 --- 3.3 爬蟲實踐:漫畫批量下載

TAG:Selenium | Python | 爬虫计算机网络 |