python + selenium + chromedriver 如何實現無界面爬取
問題描述
在使用selenium爬取12306的過程中,發現使用phantomjs無法爬取,使用chromedriver就可以,應該是phantomjs被網站檢測出來后封禁了,使用chromedriver又會顯示界面,爬取效率低。現在有兩點疑問,google了好久都沒找到有效的解決方法1.如何偽裝phantomjs,盡最大可能的偽裝2.如何設置chromedriver,使其不顯示界面,或者還有什么其他方法提高爬取效率
感謝!!!
問題解答
回答1:通過PyVirtualDisplay可以實現你的需求,大概代碼就是這樣:
#!/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()
不知道你修改過phantomjs的頭信息沒有,可以通過
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的頭部信息,這個也可以試試
回答2:可以參考鄙人的文章在headless模式下運行selenium
相關文章:
1. Python爬蟲如何爬取span和span中間的內容并分別存入字典里?2. mysql - 把一個表中的數據count更新到另一個表里?3. 請教使用PDO連接MSSQL數據庫插入是亂碼問題?4. python - 爬蟲模擬登錄后,爬取csdn后臺文章列表遇到的問題5. visual-studio - Python OpenCV: 奇怪的自動補全問題6. linux - Ubuntu下編譯Vim8(+python)無數次編譯失敗7. node.js - nodejs開發中常用的連接mysql的庫8. mysql 查詢身份證號字段值有效的數據9. 視頻文件不能播放,怎么辦?10. mysql - 分庫分表、分區、讀寫分離 這些都是用在什么場景下 ,會帶來哪些效率或者其他方面的好處
