爬蟲雜談(二)使用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
說明並沒有抓取到全部內容
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
推薦閱讀: