selenium+phantomJS爬蟲,適用於登陸限制強,點觸驗證碼等一些場景
阿新 • • 發佈:2019-01-06
selenium是很出名的自動化測試工具,多數場景是測試工程師用來做自動化測試,但是同樣selenium可以作為基本上模擬瀏覽器的工具,去爬取一些基於http request不能或者很複雜的才能爬取的站點,而且互動式指令碼(如:python) + selenium可以直接看到瀏覽器的執行過程,利於debug,同時看上去比較有成就感。
貼個例項吧
firefoxProfile = FirefoxProfile()
# Disable images
firefoxProfile.set_preference('permissions.default.image', 2)
#Disable Flash
firefoxProfile.set_preference('dom.ipc.plugins.enabled.libflashplayer.so','false')
#firefox, chrome, phantomjs
driver = webdriver.Firefox(firefoxProfile)
#login
driver.get("https://www.facebook.com/")
inputEmail = driver.find_element_by_id("email")
inputEmail.send_keys("useruseruseruser")
inputPass = driver.find_element_by_id("pass" )
inputPass.send_keys("pwpwpwpwpw")
inputPass.submit()
driver.get("https://www.facebook.com/blablabla" % (page))
driver.execute_script("alert('execute js')")
driver.quit()
配合pyvirtualdisplay可以在後臺執行,博友可自行查詢其用法
同樣selenium做爬蟲的缺點也是很明顯的:
- 慢,異乎尋常的慢(單個請求,載入的東西實在是太多了,對多執行緒也是極不友好的);
- 很吃電腦資源(CPU,網路,記憶體都是一個很大的挑戰);
- 爬取規模不能太大
- 。。。。
所以,適用於那些難搞定的小網站,需要登陸的,點觸式驗證碼啊等等