Heim  >  Fragen und Antworten  >  Hauptteil

So implementieren Sie schnittstellenloses Crawlen mit Python + Selenium + Chromedriver

Bei der Verwendung von Selen zum Crawlen von 12306 habe ich festgestellt, dass PhantomJS nicht zum Crawlen verwendet werden kann. Es sollte so sein, dass PhantomJS von der Website erkannt und blockiert wird, und das Crawlen Der Wirkungsgrad ist gering.
Jetzt habe ich zwei Fragen bei Google, aber ich habe keine wirksame Lösung gefunden
1 Wie man Chromedriver so einrichtet, dass dies nicht der Fall ist Zeigen Sie die Benutzeroberfläche an oder gibt es andere Möglichkeiten, das Crawling zu verbessern?
Danke! ! !

迷茫迷茫2711 Tage vor844

Antworte allen(2)Ich werde antworten

  • PHP中文网

    PHP中文网2017-05-18 10:55:13

    通过PyVirtualDisplay可以实现你的需求,大概代码就是这样:

    #!/usr/bin/env python
    
    from pyvirtualdisplay import Display
    from selenium import webdriver
    
    display = 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.title
    browser.quit()
    
    display.stop()
    

    不知道你修改过phantomjs的头信息没有,可以通过

    from selenium import webdriver
    options = 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的头部信息,这个也可以试试

    Antwort
    0
  • 世界只因有你

    世界只因有你2017-05-18 10:55:13

    可以参考鄙人的文章在headless模式下运行selenium

    Antwort
    0
  • StornierenAntwort