2015-06-23 39 views
1

我想抓取一個網絡應用程序,它具有登錄作爲第一個障礙,並建立在角js上。我使用scrapy和selenium來抓取網站,但登錄時出現問題。我有這個帖子,我要求幫助https://stackoverflow.com/questions/30926880/what-is-the-best-way-for-crawling-with-scrapy-and-selenium-angularjs-website但我沒有得到任何幫助。問題是當我使用硒(如下所示)讀取body元素的innerHTML時,它給了我空白的迴應。爲什麼這樣?是因爲HTTPS還是因爲任何其他權限問題?如何抓取Angular JS Web應用程序?

此外,如果有人可以幫助我如何使用scrapy和selenium以及登錄和cookie來取消網站。這將非常有幫助。

def crawl_url(url, run_headless=True): 
    if run_headless: 
     display = Display(visible=0, size=(1024, 768)) 
     display.start() 

    url = correct_url(url) 
    browser = webdriver.PhantomJS(service_args=['--load-images=no']) 
    login_url = "https://domain.com/login" 
    browser.get(login_url) 
    time.sleep(15) 
    element = browser.find_element_by_xpath('/html/body') 
    print element.get_attribute('innerHTML') 
+0

你能分享一個網站的鏈接嗎? – alecxe

+0

是否由javascript設置innerHTML,以便硒在讀取時不會出現在開頭? – jcfollower

+0

我不這麼認爲。 –

回答

1

PhantomJS已知有角的問題,我們建議您使用Chrome來代替。您可以從https://devblog.supportbee.com/2014/10/27/setting-up-cucumber-to-run-with-Chrome-on-Linux/安裝chromedriver與

browser = webdriver.Chrome() 

更換

browser = webdriver.PhantomJS(service_args=['--load-images=no']) 

,然後這應該工作。你也可以使用一個名爲Protractor的框架,它專門用於測試Angular頁面,它知道如何運行和解析JavaScript來獲取html。它有一個基於硒的webdriverjs包裝。

+0

非常感謝你的工作。 –

相關問題