python + selenium + chromedriver 如何實(shí)現(xiàn)無(wú)界面爬取
問(wèn)題描述
在使用selenium爬取12306的過(guò)程中,發(fā)現(xiàn)使用phantomjs無(wú)法爬取,使用chromedriver就可以,應(yīng)該是phantomjs被網(wǎng)站檢測(cè)出來(lái)后封禁了,使用chromedriver又會(huì)顯示界面,爬取效率低?,F(xiàn)在有兩點(diǎn)疑問(wèn),google了好久都沒(méi)找到有效的解決方法1.如何偽裝phantomjs,盡最大可能的偽裝2.如何設(shè)置chromedriver,使其不顯示界面,或者還有什么其他方法提高爬取效率
感謝?。?!
問(wèn)題解答
回答1:通過(guò)PyVirtualDisplay可以實(shí)現(xiàn)你的需求,大概代碼就是這樣:
#!/usr/bin/env pythonfrom pyvirtualdisplay import Displayfrom selenium import webdriverdisplay = Display(visible=0, size=(800, 600))display.start()# now Firefox will run in a virtual display. # you will not see the browser.browser = webdriver.Chrome()browser.get(’http://www.baidu.com’)print browser.titlebrowser.quit()display.stop()
不知道你修改過(guò)phantomjs的頭信息沒(méi)有,可以通過(guò)
from selenium import webdriveroptions = webdriver.ChromeOptions()options.add_argument(’lang=zh_CN.UTF-8’)options.add_argument(’user-agent='Mozilla/5.0 (iPod; U; CPU iPhone OS 2_1 like Mac OS X; ja-jp) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F137 Safari/525.20'’)browser = webdriver.Chrome(chrome_options=options)url = 'https://baidu.com'browser.get(url)browser.quit()
這種方式修改phantomjs的頭部信息,這個(gè)也可以試試
回答2:可以參考鄙人的文章在headless模式下運(yùn)行selenium
相關(guān)文章:
1. mysql優(yōu)化 - mysql count(id)查詢速度如何優(yōu)化?2. mysql主從 - 請(qǐng)教下mysql 主動(dòng)-被動(dòng)模式的雙主配置 和 主從配置在應(yīng)用上有什么區(qū)別?3. angular.js - angularjs 用ng-reapt渲染的dom 怎么獲取上面的屬性4. 主從備份 - 跪求mysql 高可用主從方案5. css3 - [CSS] 動(dòng)畫(huà)效果 3D翻轉(zhuǎn)bug6. node.js - node_moduls太多了7. angular.js - Angular路由和express路由的組合使用問(wèn)題8. python如何不改動(dòng)文件的情況下修改文件的 修改日期9. python - django 里自定義的 login 方法,如何使用 login_required()10. angular.js - 不適用其他構(gòu)建工具,怎么搭建angular1項(xiàng)目
![css3 - [CSS] 動(dòng)畫(huà)效果 3D翻轉(zhuǎn)bug](http://www.aoyou183.cn/attached/image/news/202304/110831f073.png)