首页 新闻 会员 周边

抓取其他页面的HTML,非源码

0
悬赏园豆:40 [已解决问题] 解决于 2017-01-06 12:05

后台代码如下:

  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有内容主体,求解,怎么抓取到内容主体。

谢六狼的主页 谢六狼 | 初学一级 | 园豆:9
提问于:2017-01-06 10:26
< >
分享
最佳答案
0

这是动态加载,通过js去加载的,这种动态内是抓取不了的,取巧的办法是用 webview把页面加载后再取document的值。有好的方法记得分享一下。

收获园豆:30
wangjinming | 小虾三级 |园豆:569 | 2017-01-06 10:37

额,我这个是pc端的。不是安卓的。。

谢六狼 | 园豆:9 (初学一级) | 2017-01-06 10:43

@谢六狼: 你是winform?winform用webbrowser.

wangjinming | 园豆:569 (小虾三级) | 2017-01-06 10:45

@wangjinming: 是asp.net

谢六狼 | 园豆:9 (初学一级) | 2017-01-06 10:47

@谢六狼: asp.net就不知道了。

wangjinming | 园豆:569 (小虾三级) | 2017-01-06 10:51

同一类型的页面的话可以动态分析一下数据接口,假如你要批量抓取就算了吧。

wangjinming | 园豆:569 (小虾三级) | 2017-01-06 11:00

@谢六狼: 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=******&_=******* 明白?

wangjinming | 园豆:569 (小虾三级) | 2017-01-06 11:10

明白了。。但是获取到的内容是unicode编码。需要改成什么才能转成中文?

谢六狼 | 园豆:9 (初学一级) | 2017-01-06 11:28

@谢六狼: 大哥基础的东西就不要来问了吧,网上一大堆啊。

wangjinming | 园豆:569 (小虾三级) | 2017-01-06 11:29

@wangjinming: 因为是菜鸟- - ,试了好几种编码转换都不行,网上搜是要自己写转化。然后才问的,还是非常感谢大哥。

谢六狼 | 园豆:9 (初学一级) | 2017-01-06 11:32

@谢六狼: 一看就是unicode,直接显示就好了,string aa = "\u8ba9\u8ff7"; 显示后直接变成中文。

wangjinming | 园豆:569 (小虾三级) | 2017-01-06 11:38

@wangjinming: 谢谢大哥。。我还是不懂怎么解码。。。不过还是不麻烦你了

谢六狼 | 园豆:9 (初学一级) | 2017-01-06 12:04

@谢六狼: 在百度输入 “unicode转中文 c#” 回车,选择第一条。

wangjinming | 园豆:569 (小虾三级) | 2017-01-06 12:06

@wangjinming: 知道为什么前面转不成功了。。。因为流返回带有这些{"code":0,"msg":"success","data":{"main":{"myself":0,字符,不是纯unicode,所以会一直报错。现是通过jquery切割,然后再转。。就成功了。

谢六狼 | 园豆:9 (初学一级) | 2017-01-06 13:25
其他回答(1)
0

页面用的ajax吧。直接抓页面是没用的。

分析页面直接请求ajax,或者webbrower页面加载完在读取内容。

收获园豆:10
czd890 | 园豆:14312 (专家六级) | 2017-01-06 10:34

具体要怎么操作呢?大神忙吗?不忙的话,贴下代码呗。

支持(0) 反对(0) 谢六狼 | 园豆:9 (初学一级) | 2017-01-06 10:52

@谢六狼: 

ajax 自己分析页面,分析代码。

webbrower简单呀,托个控件,加载页面。页面加载完成。读取document。

baidu一下。能找到demo代码。多用搜索,自己学到的,才是自己的

支持(0) 反对(0) czd890 | 园豆:14312 (专家六级) | 2017-01-06 10:56

@calvinK:  webbrower需要引入System.Windows.Forms,但我这个是asp.net 引入会失败。。。

支持(0) 反对(0) 谢六狼 | 园豆:9 (初学一级) | 2017-01-06 11:06

@谢六狼: 

楼下的帮你分析出来ajax地址了。

支持(0) 反对(0) czd890 | 园豆:14312 (专家六级) | 2017-01-06 11:13

@calvinK: 谢谢了

支持(0) 反对(0) 谢六狼 | 园豆:9 (初学一级) | 2017-01-06 12:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册