将Selenium与Phantomjs一起使用时BadStatusLine异常

时间:2016-12-06 09:17:57

标签: python selenium selenium-webdriver phantomjs

我试图访问网页并获取其网页。使用硒的来源。所以我有简单的功能,如下所示:

def visit_url(url):
    browser = webdriver.PhantomJS()
    if not url.startswith("http://") and not url.startswith("https://"):
        url = "http://" + url
    browser.get(url)
    html = browser.page_source
    browser.quit()
    return html

我在不同的页面上尝试过它,似乎工作正常。不幸的是,我遇到导致www.wp.pl异常的页面(BadStatusLine)。所以我将驱动程序更改为webdriver.Firefox()并再次调用此函数,这次它起作用了。什么可能导致webdrivers行为的这种差异?我使用的硒版本是2.53.1

1 个答案:

答案 0 :(得分:0)

事实证明,有些网页需要指定用户代理,因此我使用了here找到的解决方案并将我的功能更改为:

def visit_url(url):
    dcap = dict(DesiredCapabilities.PHANTOMJS)
    dcap["phantomjs.page.settings.userAgent"] = (
        "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/53 "
        "(KHTML, like Gecko) Chrome/15.0.87"
    )
    browser = webdriver.PhantomJS(desired_capabilities=dcap)
    if not url.startswith("http://") and not url.startswith("https://"):
        url = "http://" + url
    browser.get(url)
    html = browser.page_source
    browser.quit()
    return html