BadStatusLine异常时使用硒与Phantomjs
问题描述:
我试图访问页面,并获得其使用硒的来源。所以我有简单的功能,看起来像这样:BadStatusLine异常时使用硒与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
我试过它在不同的页面,它似乎工作正常。不幸的是,我遇到了导致BadStatusLine
例外的页面(www.wp.pl
)。于是我将驱动程序更改为webdriver.Firefox()
并再次调用此函数,并且这次它工作。什么可能导致webdrivers行为的这种差异?我使用硒的版本是2.53.1
答
原来,有些页面需要指定用户代理,所以我用一个解决方案发现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