当前位置:编程学习 > C#/ASP.NET >>

页面抓取的问题

某些页面采用了JS输出HTML代码的方法来生成页面,在抓取这类页面的时候,请问如何保证抓到的内容保持JS代码不变,而不是已解析后的HTML代码。
比如在http://images.google.cn上随便搜索图片,点击搜索按钮后,在页面内相看源代码会有类似

dyn.Img("http://cgi.ebay.com.cn/ws/eBayISAPI.dll%3FViewItem%26item%3D180129532438%26ih%3D008%26category%3D119907&h=363&w=500&sz=48&hl=zh-CN&start=12"," target=_blank","XN3xhKqY2NfcFM:","http://www.aini99.com/images/digi/f3003/f3003007.jpg","130","94","和常见的闪存MP4一样,\x3cb\x3eF\x3c/b\x3e-3002 \x3cb\x3e...\x3c/b\x3e","","","500 x 363 - 48k","jpg","cgi.ebay.com.cn","","","http://tbn0.google.com/images","0");

的东东。但是通过在.net中用流抓取整个页面后,这些东东全部变成了相对应的html代码。请问如何才能让他保持原有不变。即和点击查看源代码后是一样的。

--------------------编程问答-------------------- 应该没问题吧

你最好在程序里面加上  HTTP Agent属性 如
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3 --------------------编程问答-------------------- 能不能详细点? --------------------编程问答-------------------- 帮顶下 --------------------编程问答-------------------- sf --------------------编程问答-------------------- HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Referer = "http://www.baidu.com";
req.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3";
req.Headers.Add("Accept-Charset", "gb2312,utf-8;q=0.7,*;q=0.7"); --------------------编程问答-------------------- 帮顶 --------------------编程问答-------------------- 不知道你是怎么做的,用这个试试吧

private string GetHtmlSource(string url)
{
    System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
    request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1) Web-Sniffer/1.0.24";
    System.Net.WebResponse response = request.GetResponse();
    System.IO.Stream resStream = response.GetResponseStream();
    System.IO.StreamReader sr = new System.IO.StreamReader(resStream, System.Text.Encoding.UTF8);
    string htmlSource = (sr.ReadToEnd());
    resStream.Close();
    sr.Close();
    return htmlSource;
} --------------------编程问答-------------------- 你说的问题很奇怪,知道吗?很多做搜索引擎的都希望能抓到JS运行的结果,而不是JS代码。

你却恰恰相反。你的需求一般代码都可以实现。



欢迎访问我的视频搜索引擎:

http://www.vzhangmen.com --------------------编程问答-------------------- mark --------------------编程问答-------------------- 用浏览器控件也可以得到网页的源代码,并且还可以执行网页中的脚本代码 --------------------编程问答-------------------- lxcnn(过客) (超级大菜鸟,昨天才上路) 
的方法抓取的总是登录页面的代码 --------------------编程问答-------------------- 可以试
--------------------编程问答-------------------- 友情帮顶
--------------------编程问答-------------------- string url = "http://www.baidu.com";
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
Stream stream = webResponse.GetResponseStream();
StreamReader reader = new StreamReader(stream, System.Text.Encoding.GetEncoding("gb2312"));//访问的页面字符编码
string strTable = reader.ReadToEnd();//整个页面内容 --------------------编程问答--------------------
引用 8 楼  的回复:
你说的问题很奇怪,知道吗?很多做搜索引擎的都希望能抓到JS运行的结果,而不是JS代码。

你却恰恰相反。你的需求一般代码都可以实现。


欢迎访问我的视频搜索引擎:

http://www.vzhangmen.com



如果只是抓取页面的内容而不是需要js运行的结果内容,你可以去我的空间里看看,我记得我以前写过一个这种例子,抓取了dx几百万条评论。。不过好像代码没整理,需要你自己看了。


有哪位大侠可以指点下,怎么抓取js的执行结果
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,