如何抓取ajax数据 急~~~

peng19873 2010-11-22 10:44:19
//要抓取的URL地址
string UrlBank = "http://www.bankrate.com.cn/bankoutlets/1";
string strResultBank = GetWebContent(UrlBank);
//取出和数据有关的那段源码
int iBodyStartBank = strResultBank.IndexOf("<body", 0);
int iStartBank = strResultBank.IndexOf("中国建设银行省份网点", iBodyStartBank);
int iTableStartBank = strResultBank.IndexOf("<div", iStartBank);
int iTableEndBank = strResultBank.IndexOf("</div>", iTableStartBank);
string strWebBank = strResultBank.Substring(iTableStartBank, iTableEndBank - iTableStartBank + 8);

//生成HtmlDocument
WebBrowser webbBank = new WebBrowser();
webbBank.Navigate("about:blank");
HtmlDocument htmldocBank = webbBank.Document.OpenNew(true);
htmldocBank.Write(strWebBank);
HtmlElementCollection htmlTRBank = htmldocBank.GetElementsByTagName("a");
foreach (HtmlElement tr in htmlTRBank)
{
strCity = tr.OuterText;
strCity = strCity.Substring(0, strCity.Length - 1);
}


我做了一个实例,以上这段代码可以抓取到html 所有源码,并可以获取我想要的数据
现在问题是我要抓取这里面的数据 http://www.bankrate.com.cn/creditcard/10_2
可是查看源码后如“主卡年费”显示的是0(<td class="td_data_left td_bg">主卡年费</td>
<td class="content ajaxdata">0</td>)这里正确的应该是“免费”,这样我就纳闷了,
我如果才能得到真正的数据呢,谢谢各位支招
...全文
240 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
tiger04522 2012-07-04
  • 打赏
  • 举报
回复
最主是要能获取ajax处理的数据
peng19873 2010-11-24
  • 打赏
  • 举报
回复
现在我已得到AJAX数据了,代码如下:

//提交数据
HttpWebRequest myHttpWebRequest;
myHttpWebRequest = (HttpWebRequest)WebRequest.Create("http://code.bankrate.com.cn/getProductData/creditcard_1152_0");
myHttpWebRequest.Referer = "http://www.bankrate.com.cn/creditcard/1152";

//返回信息
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
Stream resStream = myHttpWebResponse.GetResponseStream();
StreamReader sr = new StreamReader(resStream,System.Text.Encoding.Default);
string responseContent = sr.ReadToEnd();
resStream.Close();
sr.Close();

可是 responseContent 得到的是 setAjaxData([\"80\\u5143\",\"40\\u5143\",\"25\\u5929\",
这样的数据,现在我需要把这个转换成汉字,如果转换,我试着用UTF-8,GB2312 但都不行,最终得到的还是原文,不知道如何转,有哪位知道吗?
米娜Rose 2010-11-22
  • 打赏
  • 举报
回复
mark!最近也在做这方面的。
peng19873 2010-11-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 peng19873 的回复:]
//要抓取的URL地址
string UrlBank = "http://www.bankrate.com.cn/bankoutlets/1";
string strResultBank = GetWebContent(UrlBank);
//取出和数据有关的那段源码
int iBodyStartBank = strResultBank.IndexOf("<body", 0……
[/Quote]
这个地方是动态的啊,不一定是“免费”,如果都是这个数据的话那我就不用搞这么麻烦了
gongsun 2010-11-22
  • 打赏
  • 举报
回复
多测试几下,找找规律,不一定全都的取到。
biaofanwo 2010-11-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 kk706 的回复:]
估计页面加载完了,用js处理了。楼主手动处理吧
[/Quote]
+1
kk706 2010-11-22
  • 打赏
  • 举报
回复
估计页面加载完了,用js处理了。楼主手动处理吧
q107770540 2010-11-22
  • 打赏
  • 举报
回复
string=="0"?"免费":string
newdigitime 2010-11-22
  • 打赏
  • 举报
回复
你看看源代码

<script type="text/javascript">
loadContent('http://code.bankrate.com.cn/getProductData/creditcard_10_2');
</script>
秘密就是http://code.bankrate.com.cn/getProductData/creditcard_10_2

这个是抓取你所需数据的真实URL
当然,很多网站都进行了referer来源判断,所以抓取时,还要模拟httpreferer
既然你会抓取网站,如何模拟就不多说了.

lilianjie0426 2010-11-22
  • 打赏
  • 举报
回复
正则表达式匹配。。。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧