最近在写一个网络爬虫,本来都基本完成了90%。但后来发现对象网站通过ajax来进行数据更新,当然其实这个我也早估到,因为这样就不用不停的刷页面;但估不到的竟然用SessionID进行验证并进行数据交换。即只有登录成功的SessionID才可以进行数据获取,更奇特的是他是xml,这个也算了并且xml不是直接全部数据显示出来,有时候甚至没有一点,,哎,搞了一大轮想到的办法是建一个Sqlite数据库和读XML的控件,进行读取。。就这样搞了一半,突然想到一个webBrowser控件,这个控件先模拟登陆然后再在webBrowser中读取相关的html,而本来计划是监控webBrowser获取其连接,但看了一下这样也比较复杂,主要是要读xml然后写数据库,这样费力。。后来,想到既然能读出HTML那么我们可以把HTML保存为HTML,让接口读就是了。。预是就开始了这篇。
先说读取吧,读取比较简单“this.webBrowser1.DocumentStream”就能读HTML的代码但不足的就是编码会乱因为网页是GBK的。。好吧还是上代码。
private void Write_html()
{
System.IO.StreamReader getReader = new System.IO.StreamReader(this.webBrowser1.DocumentStream, System.Text.Encoding.GetEncoding("gb2312"));
string WHtml = getReader.ReadToEnd();
string logPath = AppDomain.CurrentDomain.BaseDirectory + "\\HTML.html";
if (string.IsNullOrEmpty(WHtml))
return;
if(!WHtml.Contains("#edf3fa"))
return;
LogManager.WriteLog("Write_html===>RUN");
try
{
using (StreamWriter sw = File.CreateText(logPath))
{
sw.WriteLine(WHtml);
sw.Flush();
sw.Close();
sw.Dispose();
}
}
catch (Exception _err)
{
LogManager.WriteLog("Write_html=_err==>:" + _err);
}
}
上面的代码就是通过读取webBrowser1的内容写入html里面的。。这样就完成html的建立。。。那怎么激活这个呢,一开始想打开页面后再执行,但因为有时候webBrowser1还没完成加载完成,所以无内容。因此突然想到一个webBrowser1_DocumentCompleted。。这个DocumentCompleted就是监听加载完毕就执行这个,预是在这里加入就可以了。。完美。。最后,怎么激活webBrowser1的地址,其实就是webBrowser1.Navigate("网站")就可以了。。又多了一个简单的功能。。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。