抓取网页数据的有关问题(使用HtmlAgilityPack、WebBrowser)
请教各位抓取网页数据的问题(使用HtmlAgilityPack、WebBrowser)
获取某页面的部分数据,使用HtmlAgilityPack解析第一页时结果正常。
问题:1、运行后DocumentCompleted事件好像只触发了一次,最终停止在第二页
2、不能获取到新页面的DocumentText,只能反复获取第一页的数据。
请教一下解决方法,感谢!
测试网页地址:http://stock.finance.sina.com.cn/fundInfo/view/FundInfo_LSJZ.php?symbol=100056
测试代码如下:
------解决思路----------------------
ajax加载后的页面貌似只有java有个dll支持,net貌似没对应的版本
------解决思路----------------------
那跟 DocumentCompleted 没有关系,人家根本不刷新页面。
那需要插入 javascript 代码,创建一个新的javascript 对象来保存旧的 GetAjaxData 函数,然后用你的新的GetAjaxData函数来替换旧的 GetAjaxData 函数,新的 GetAjaxData 函数内部要调用旧的 GetAjaxData 函数。
获取某页面的部分数据,使用HtmlAgilityPack解析第一页时结果正常。
问题:1、运行后DocumentCompleted事件好像只触发了一次,最终停止在第二页
2、不能获取到新页面的DocumentText,只能反复获取第一页的数据。
请教一下解决方法,感谢!
测试网页地址:http://stock.finance.sina.com.cn/fundInfo/view/FundInfo_LSJZ.php?symbol=100056
测试代码如下:
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
WebBrowser targetWeb = sender as WebBrowser;
if (targetWeb.ReadyState == WebBrowserReadyState.Complete)
{
HtmlAgilityPack.HtmlDocument hapHtmlDoc = new HtmlAgilityPack.HtmlDocument();
hapHtmlDoc.LoadHtml(targetWeb.DocumentText);
HtmlNodeCollection targetNodeList = hapHtmlDoc.DocumentNode.SelectNodes("//td[@class='f005'][1]");//获取日期
foreach (HtmlNode test in targetNodeList)
System.Diagnostics.Debug.WriteLine(test.InnerHtml);//测试内容
System.Windows.Forms.HtmlDocument winHtmlDoc = targetWeb.Document;
foreach (HtmlElement item in winHtmlDoc.GetElementsByTagName("a"))
{
if (item.OuterText == "下一页")
{
item.InvokeMember("click");
break;
}
}
}
}
------解决思路----------------------
ajax加载后的页面貌似只有java有个dll支持,net貌似没对应的版本
------解决思路----------------------
那跟 DocumentCompleted 没有关系,人家根本不刷新页面。
那需要插入 javascript 代码,创建一个新的javascript 对象来保存旧的 GetAjaxData 函数,然后用你的新的GetAjaxData函数来替换旧的 GetAjaxData 函数,新的 GetAjaxData 函数内部要调用旧的 GetAjaxData 函数。