찾다

 >  Q&A  >  본문

网页爬虫 - ubuntu 下 python 使用 selenium + PhantomJS 时出错

PHP中文网PHP中文网2804일 전898

모든 응답(4)나는 대답할 것이다

  • 迷茫

    迷茫2017-04-17 14:35:09

    我最近也遇到,我认为是动态js还没解析,所以没获取到网页代码。异常是NoSuchElementException,很明显了。

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-17 14:35:09

    还有一种可能,是由于phantomjs属于headless browser,是没有窗口的,那么可能所有元素都没有绘制。所以这时候你find任何元素都是NoSuchElementException异常。
    可以尝试如下步骤:

    browser = webdriver.PhantomJS()
    browser.set_window_size(800, 600) # set browser size.
    browser.get("http\:example.com") # Load page

    参考:https://github.com/ariya/phantomjs/issues/11637

    회신하다
    0
  • 怪我咯

    怪我咯2017-04-17 14:35:09

    自己回答一下吧。
    在stackoverflow上找到了一个解决方法。
    屏蔽掉css,图片和js,以提高速度。
    虽然PhantomJS还是不能用,但是确实速度变快了,目的达到就好。

    firefox_profile = webdriver.FirefoxProfile()
    firefox_profile.set_preference("browser.download.folderList", 2)
    firefox_profile.set_preference("permissions.default.stylesheet", 2)
    firefox_profile.set_preference("permissions.default.image", 2)
    firefox_profile.set_preference("javascript.enable", False)
    
    browser = webdriver.Firefox(firefox_profile=firefox_profile)
    

    http://stackoverflow.com/questions/20892768/how-to-speed-up-browsing-in-selenium-firefox
    http://stackoverflow.com/questions/17462884/is-selenium-slow-or-is-my-code-wrong

    회신하다
    0
  • 阿神

    阿神2017-04-17 14:35:09

    这样的话,岂不是js也无法解析了,为什么不用其他的更快的工具呢?

    회신하다
    0
  • 취소회신하다