如何在C#中抓取动态网站?

时间:2017-09-03 13:32:34

标签: javascript c# html

我正在试图抓取https://public.rts.iebc.or.ke/enr/index.html#/Kenya_Elections_Senator/1

使用HtmlAgilityPack。这是一个动态网站。页面完全加载后显示内容。我的代码通过this方法返回加载栏的HTML,而this方法抛出TargetInvocationException。我不知道如何让它等到页面完全加载然后刮掉它。

1 个答案:

答案 0 :(得分:1)

HtmlAgilityPack 只是.Net的库。您发出请求,库允许您轻松解析HTML响应。如果它不包含您想要抓取的数据,那么您需要执行不同的请求。对于您提到的页面,它使用Ajax更新页面,但Html是从Json响应动态生成的。 HtmlAgilityPack不解析json但是Html,这是一个问题。如果您的代码反复请求同一个Url,那么您每次都会使用原始Html获取新页面,但这并不能解决您的问题。

如果您正在使用 WebBrowser ,则可以使用计时器等待。

对于.Net的 Selenium 驱动程序,您需要设置超时,以便在提升未找到异常之前,它会继续尝试查找元素一段时间。