2017-03-14 112 views
1

我用我的C#項目Geckofx和Htmlagilitypack來解析一些網站(例如Xing,LinkedIn)。 由於LinkedIn更新了他們的網頁,因此無法解析相關信息。因爲信息在加載頁面後正在加載ajax。這就是爲什麼,我需要的信息不是在源代碼中準備的,這會禁用HtmlAgilityPack來獲取信息。HTMLagilitypack無法解析內容

例如看到頁面:https://www.linkedin.com/in/johntroch/

我怎麼可以解析的內容?

+0

你想從你提到的linkedin鏈接中獲取什麼? –

+0

例如他的名字,職位和城市,但如果您查看源代碼,則絕對沒有信息。 –

回答

0

本週早些時候我想知道同樣的事情。不幸的是,如果從這個類似的問題的答案仍然適用,所以無法使用只做HTMLAgilityPack :(

HTMLAgilityPack load AJAX content for scraping

+0

對我來說沒問題,我應該用什麼來代替HTMLAgilityPack? –

+0

你可以嘗試在Firefox中使用firebug add。這我相信使用DOM,而不僅僅是標記(不像HTMLAgilityPack)。如果可能的話,而不是標準的XPATH,它會付出代價。除非您不介意在網站結構發生變化時更新代碼。 –

0

你不能用HAP做到這一點,但你可以與硒的幫助下做。網絡驅動程序/ Web瀏覽器控件或PhantomJS用於模擬瀏覽器下面是使用PhantomJS司機的樣本

IWebDriver driver = new PhantomJSDriver(); 
driver.Navigate().GoToUrl("https://www.linkedin.com/in/johntroch/"); 
var backpack = driver.FindElement(By.XPath("//*[contains(@class,'profile-overview')]")); 

上面這段代碼將讓你這樣的:

output of nodes fetched

這裏是你如何使用PhantomJS的Link和硒Visit this

1

我用手動控制解決它:

   while (!getSource().Contains("any text");) 
       { 
        Application.DoEvents(); 
       } 

的getSource()是給我的源代碼的另一種方法的頁面。我做一個檢查,直到我得到我的文本。然後我得到所有與動態內容的源代碼。