2016-12-06 49 views
1

我試圖訪問頁面,並獲得其使用硒的來源。所以我有簡單的功能,看起來像這樣: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

回答

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