selenium提供了css選擇器和xpath甚至還有by tag_name、by attribute之類的方法,很方便,在此之前我的都是xpath,但是看到這些方法,我還是果斷放棄了xpath......
坑
等等,你以為這樣的代碼在osx下測(cè)試的好好的,放到Linux下能跑了?
拿Debian舉例:
sinux@Sinux-Universe:~$ cat /etc/issue
Debian GNU/Linux 8
l
首先你的服務(wù)器需要一個(gè)瀏覽器,下載一個(gè)Chromium吧:
sudo apt-get install chromium
好了,現(xiàn)在有了Chrome了。
但是絕大多數(shù)Linux服務(wù)器沒(méi)有圖形化界面,所以你還需要模擬出一個(gè)展示 WebDriver 的地方。
這里使用 PyVirtualDisplay 。
在使用driver之前,先開(kāi)啟一個(gè)演示界面
from pyvirtualdisplay import Display
display = Display(visible=0, size=(800, 800))
display.start()
你發(fā)現(xiàn)仍然報(bào)錯(cuò),因?yàn)镃hromedriver的很多版本(2.20,2.19,2.15都是不行的)和selenium是存在沖突的,所以你還需要找到一個(gè)specific版本,它是chromedriver for linux 64 2.10。
不要想著在64位的服務(wù)器下使用32位的東西了,它們只會(huì)增加出錯(cuò)誤的幾率。
到現(xiàn)在,這個(gè)爬蟲(chóng)才可以跑起來(lái),但是效果不是很理想,可能是因?yàn)榧嫒菪灾惖膯?wèn)題,在服務(wù)器下表現(xiàn)遠(yuǎn)沒(méi)有開(kāi)發(fā)環(huán)境下順暢,錯(cuò)誤頻出。
----------正文結(jié)束-----------
但是我們還是有辦法的不是嗎,比如寫(xiě)一個(gè)?炸天的守護(hù)進(jìn)程,來(lái)保證即便出錯(cuò)了,我們的爬蟲(chóng)仍然可以堅(jiān)挺的不斷的爬:
# i am the best deamon
while true ; do
pkill chromedriver
python spider.py
done
好了,總結(jié)一下是如果你恰好遇到了需要爬的內(nèi)容,那么模擬一些JS事件、發(fā)送請(qǐng)求是一個(gè)比較煩人的問(wèn)題,但是相比需要在保證效率的前提下需要不斷換代理來(lái)應(yīng)對(duì)反爬蟲(chóng)策略之類的問(wèn)題來(lái)說(shuō),還算是一個(gè)一勞永逸的事。