2 tobebrilliant ToBeBrilliant 于 2015.07.14 20:25 提问

请问如何抓下去抓取如下链接中的数据?搞了几天了,没有头绪啊,坐等大神帮忙。。。。

各位大神好,我想抓取这个网站上http://xxfb.hydroinfo.gov.cn/ssIndex.html,大江大河的水文数据,
如图所示,好像是用post方法才能返回表里的数据,但是小白实在是不会用,请各路大神帮忙看看,如何获取这个表中的数据,谢谢啦

4个回答

oyljerry
oyljerry   Ds   Rxr 2015.07.14 21:09

可以用浏览器控制台抓一下请求,post的各种参数需要你能够搞清,这样就可以构造对应的参数,一个个发送post获取返回数据,然后再解析结果。

ToBeBrilliant
ToBeBrilliant 大神能否加个QQ交流一下啊?313953657
2 年多之前 回复
ToBeBrilliant
ToBeBrilliant 回复oyljerry: 额额,怎么判断哪些是post需要的参数,也不知道怎么在程序中写出来
2 年多之前 回复
oyljerry
oyljerry 回复Tobebrilliant: api文档难道没有例子。你多用浏览器请求几次,看哪些参数不变,哪些变化
2 年多之前 回复
ToBeBrilliant
ToBeBrilliant 感觉我看到的和楼上那位大神不一样,也不知道post的请求参数怎么写,看了API文档还是不明白,大神请赐教
2 年多之前 回复
zuishikonghuan
zuishikonghuan   2015.07.14 20:32

额,发送网络请求就行了呗,socket或者wininet觉着那个顺手用那个
获取数据后有必要就转码,然后就是基本的字符串操作了。。

Hackxiaoyue
Hackxiaoyue 回复尚书左仆射: 也就是说hwnd=false时执行{}里的代码是嘛
一年多之前 回复
zuishikonghuan
zuishikonghuan 回复Tobebrilliant: 先用抓包软件获取post的内容,然后发送请求
2 年多之前 回复
ToBeBrilliant
ToBeBrilliant 我一开始用的是get方法,发现返回来的内容没用这个表中的数据,只给了一个表的名字
2 年多之前 回复
ToBeBrilliant
ToBeBrilliant 我一开始用的是get方法,发现返回来的内容没用这个表中的数据,只给了一个表的名字
2 年多之前 回复
showbo
showbo   Ds   Rxr 2015.07.14 20:54

自己用浏览器开发工具看就知道,数据是ajax动态加载的,你请求这个页面看不到数据的,接口是http://xxfb.hydroinfo.gov.cn/dwr/call/plaincall/IndexDwr.getSreachData.dwr,需要POST传递以下参数,
callCount=1
page=/ssIndex.html
httpSessionId=457DF20DBA703F85B030FDAEA46034DD.tomcat1
scriptSessionId=5481D9BFF3351DC2FF23AE7BBB32F366628
c0-scriptName=IndexDwr
c0-methodName=getSreachData
c0-id=0
c0-param0=string:hd
c0-param1=string:
c0-param2=string:
batchId=0

showbo
showbo 回复Tobebrilliant: httpSessionId,scriptSessionId好像和session有关系,你自己用firebug或者chrome好好研究下了。。
2 年多之前 回复
ToBeBrilliant
ToBeBrilliant HttpClient httpclient = new HttpClient(); PostMethod postMethod = new PostMethod("http://xxfb.hydroinfo.gov.cn/ssIndex.html"); NameValuePair[] postData = new NameValuePair[11]; postData[0] = new NameValuePair("callCount", "1"); postData[1] = new NameValuePair("httpSessionId", "457DF20DBA703F85B030FDAEA46034DD.tomcat1"); postData[2] = new NameValuePair("scriptSessionId", "5481D9BFF3351DC2FF23AE7BBB32F366628");
2 年多之前 回复
ToBeBrilliant
ToBeBrilliant 谢谢谢谢啊
2 年多之前 回复
ToBeBrilliant
ToBeBrilliant 可不可以写个示例啊,不知道怎么传递这些参数
2 年多之前 回复
Evankaka
Evankaka   Ds   Rxr 2015.07.14 21:38

可以用python来做,先用fiddler来看,正常情况下查看这些数据需要发送的POST或GET请求报头。
然后自己再用python编写个伪装的浏览器,构造请求报送。然后返回的应该就是你要的数据了!具体看看下面
http://blog.csdn.net/evankaka/article/details/46849095

ToBeBrilliant
ToBeBrilliant 回复林炳文Evankaka: 好 我再研究一下 多谢啊
2 年多之前 回复
Evankaka
Evankaka 回复Tobebrilliant: python肯定是可以,而且比较简单
2 年多之前 回复
ToBeBrilliant
ToBeBrilliant 那篇博客写的确实详细,不知道能不能满足我的那个需求啊
2 年多之前 回复
ToBeBrilliant
ToBeBrilliant 那篇博客写的确实详细,不知道能不能满足我的那个需求啊
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片