2017-03-14 109 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()是给我的源代码的另一种方法的页面。我做一个检查,直到我得到我的文本。然后我得到所有与动态内容的源代码。