今日偶在抓取某个网站的数据。但是发现了一个奇怪的问题。。 //第一种抓取网页源代码方法:
MSXML2.XMLHTTP _xmlhttp = new MSXML2.XMLHTTPClass();
_xmlhttp.open("GET", Url, false, null, null);
_xmlhttp.send("");
if (_xmlhttp.readyState == 4)
{
s = System.Text.Encoding.UTF8.GetString((byte[]) _xmlhttp.responseBody);
}
//第二种抓取网页源代码方法:
System.Net.WebClient wc = new WebClient();
wc.Encoding = System.Text.Encoding.GetEncoding("UTF-8");
text1 = wc.DownloadString(url);
用上述代码读取回来的网页源代码有问题,其问题是该读取回来的源代码跟你在浏览器上看到的源代码有出入。。
于是用 winform 里面的webBrowser控件读取出来的代码才发现没有问题
但是使用webBrowser这个控件读取网页源代码很不方便。。因为我是用批量的URL进行抓取的。很容易会导致假死所以请大家帮忙解决以下问题
1.不知道大家有没有其他办法能够读取出正确的源代码。。
2.如果只能用 webBrowser 这种方式来读取源代码的话,不知道能否提供一个“利用多线程的方式去抓取并分析源代码”的 方法代码
3.我想知道那网站是怎么判断出我不是用浏览器去查看他们网页的(这个问题我只是想知道一下)
MSXML2.XMLHTTP _xmlhttp = new MSXML2.XMLHTTPClass();
_xmlhttp.open("GET", Url, false, null, null);
_xmlhttp.send("");
if (_xmlhttp.readyState == 4)
{
s = System.Text.Encoding.UTF8.GetString((byte[]) _xmlhttp.responseBody);
}
//第二种抓取网页源代码方法:
System.Net.WebClient wc = new WebClient();
wc.Encoding = System.Text.Encoding.GetEncoding("UTF-8");
text1 = wc.DownloadString(url);
用上述代码读取回来的网页源代码有问题,其问题是该读取回来的源代码跟你在浏览器上看到的源代码有出入。。
于是用 winform 里面的webBrowser控件读取出来的代码才发现没有问题
但是使用webBrowser这个控件读取网页源代码很不方便。。因为我是用批量的URL进行抓取的。很容易会导致假死所以请大家帮忙解决以下问题
1.不知道大家有没有其他办法能够读取出正确的源代码。。
2.如果只能用 webBrowser 这种方式来读取源代码的话,不知道能否提供一个“利用多线程的方式去抓取并分析源代码”的 方法代码
3.我想知道那网站是怎么判断出我不是用浏览器去查看他们网页的(这个问题我只是想知道一下)
解决方案 »
- C#子窗体刷新父窗体
- 如何做一个界面漂亮的CS结构桌面程序?
- C#有同时可以选择文件和目录的类吗
- 类似QQ尾巴的东西是如何实现的?大家发挥想象力,讨论一下
- 关闭网页框架
- 关于线程的问题,高手们帮帮忙
- 在treeview的mouseup事件中,怎样判断是否选中节点?
- 我给50分,请朋友赶紧帮我考虑一下,我的代码运行后为什么不能收到信!在线等~~~~
- 学习silverlight,需要学ASP.NET吗?
- C#中如何将一个截取String中的元素赋值给一个Int类型的数组
- 怎样不加载图片即可获得图片的尺寸?
- [共享]Syncfusion Essential Studio Enterprise v7.2.0.20 序列号
用HttpWebRequest
打个比方:。。你在IE打开一个某一个网站,然后点击查看源代码的时候。你会看到有一个叫“ 啊开 ”的人名,但是如果你用“非webBrowser”方式的代码去读取同一个网址,你会找不到“啊开” 这个人名。
我抓取的网页是不需要登录的,
用HttpWebRequest方式抓取的结果也是有问题的。。
“啊开”这个词可能是使用JAVASCRIPT来设置的
如果网站的内容使用AJAX来获取,那你就得分析最终的数据是从哪个URL来的
“啊开”这个关键词,有可能是执行JAVASCRIPT才显示的,你使用IE、WebBrowser打开网页,IE、WebBrowser都会执行JAVASCRIPT,所以都能看到啊开,但是XMLHTTP、WebClient 、HttpWebRequest这些方法都不会执行JAVASCRIPT,所以在源代码里看不到啊开,这些只是猜测
明白?
你使用IE、WebBrowser打开网页,IE、WebBrowser都会执行JAVASCRIPT是这样的,我要的是源代码。。而不是看他前台显示什么哦(请忽略“前台显示”这个操作)。。现在我读取回来的源代码,跟我在IE浏览器中右键查看源代码不同。。
http://blog.csdn.net/sxldfang/archive/2010/04/12/5478078.aspx