后台代码如下:
string url = "http://baoliao.cq.qq.com/pc/detail.html?id=443758s";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Accept = "*/*"; //接受任意文件
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)"; //
request.AllowAutoRedirect = true;//是否允许302
request.Referer = url; //当前页面的引用
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream, Encoding.GetEncoding("utf-8"));
html = reader.ReadToEnd();
stream.Close();
text.Text = html;
如题,asp.net 抓取页面内容,如http://baoliao.cq.qq.com/pc/detail.html?id=443758这个网站的内容,其他页面的抓取都没问题,这个网站好像有点特殊,他只能抓取到页面的源代码,但不能抓取到整个HTML,各位大神也可以打开这网站的源码,也找不到内容主体。但HTML有内容主体,求解,怎么抓取到内容主体。
这是动态加载,通过js去加载的,这种动态内是抓取不了的,取巧的办法是用 webview把页面加载后再取document的值。有好的方法记得分享一下。
额,我这个是pc端的。不是安卓的。。
@谢六狼: 你是winform?winform用webbrowser.
@wangjinming: 是asp.net
@谢六狼: asp.net就不知道了。
同一类型的页面的话可以动态分析一下数据接口,假如你要批量抓取就算了吧。
@谢六狼: http://baoliao.cq.qq.com/api/content/detail?id=443758&_=1483671776305这个是数据接口 443758是你的id 1483671776305单前时间戳,带好秒的,你把要抓取的地址全都换一下就可以了。
http://baoliao.cq.qq.com/pc/detail.html?id=443758 换成
http://baoliao.cq.qq.com/api/content/detail?id=******&_=******* 明白?
明白了。。但是获取到的内容是unicode编码。需要改成什么才能转成中文?
@谢六狼: 大哥基础的东西就不要来问了吧,网上一大堆啊。
@wangjinming: 因为是菜鸟- - ,试了好几种编码转换都不行,网上搜是要自己写转化。然后才问的,还是非常感谢大哥。
@谢六狼: 一看就是unicode,直接显示就好了,string aa = "\u8ba9\u8ff7"; 显示后直接变成中文。
@wangjinming: 谢谢大哥。。我还是不懂怎么解码。。。不过还是不麻烦你了
@谢六狼: 在百度输入 “unicode转中文 c#” 回车,选择第一条。
@wangjinming: 知道为什么前面转不成功了。。。因为流返回带有这些{"code":0,"msg":"success","data":{"main":{"myself":0,字符,不是纯unicode,所以会一直报错。现是通过jquery切割,然后再转。。就成功了。
页面用的ajax吧。直接抓页面是没用的。
分析页面直接请求ajax,或者webbrower页面加载完在读取内容。
具体要怎么操作呢?大神忙吗?不忙的话,贴下代码呗。
@谢六狼:
ajax 自己分析页面,分析代码。
webbrower简单呀,托个控件,加载页面。页面加载完成。读取document。
baidu一下。能找到demo代码。多用搜索,自己学到的,才是自己的
@calvinK: webbrower需要引入System.Windows.Forms,但我这个是asp.net 引入会失败。。。
@谢六狼:
楼下的帮你分析出来ajax地址了。
@calvinK: 谢谢了