1. 程式人生 > >selenium+phantomJS爬蟲,適用於登陸限制強,點觸驗證碼等一些場景

selenium+phantomJS爬蟲,適用於登陸限制強,點觸驗證碼等一些場景

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做爬蟲的缺點也是很明顯的:

  1. 慢,異乎尋常的慢(單個請求,載入的東西實在是太多了,對多執行緒也是極不友好的);
  2. 很吃電腦資源(CPU,網路,記憶體都是一個很大的挑戰);
  3. 爬取規模不能太大
  4. 。。。。

所以,適用於那些難搞定的小網站,需要登陸的,點觸式驗證碼啊等等