用Post方式抓取一个网页

王朝html/css/js·作者佚名  2006-12-28
宽屏版  字体: |||超大  

这段时间接到一个抓取任务,任务的目标是,对Http://www.hzti.com网站的违章数据进行抓取,刚接到这个任务粗略的分析了一下网站代码的格式,认为这个任务在一天之内就能完成(应该还可以省下一点时间看看新闻。。:))。

由于以前用Nutch对网站进行抓取过,所以我认为只要完成网页有效数据的提取就等于完成了这个任务。三个小时过后提取部分测试通过,我将代码组装到Nutch(Nutch经过我的修改已经面目全非了)上,实施抓取。抓取的测试链接为:http://www.hzti.com/wzcx_1.asp?search_exist=1&search_cartype=0&search_value=浙A88124 ,几次调试过后,没有得到预期的网页,单步跟踪后,一直被忽略的问题发现了,原来我以前抓取的数据都是用Get方式提交的,而这次不一样,是用Post方式提交的,所以虽然测试链接在浏览器中可以取得预期的网页,但是并不能用Socket通过Get方式取得预期的网页。(到这里才觉得问题不是那么简单)一天过去了。。。:)

为了将Get方式的Socket连接改成Post方式的,我安排了一个上午的时间在网上搜索资料。根据网上的资料显示,Post方式提交的表单比Get提交的数据量大,而且Post可以提交不可见的数据,所以问题变为怎么得到网页Post的数据。关于Post方式访问网站的资料一大堆,可是却没找到“怎么才能得到一个页面Post方式提交的数据”,在大量搜索无果的情况下,只有向朋友求助。又过了一天。。。:)

经师兄(陈恩)指点用网络嗅探器可以得到浏览器提交的全部信息,所以又一次搜索,先后找到了三个嗅探器(Visual Sniffer,Effetech Sniffer,URLSnooper)Visual Sniffer只能得到服务返回给浏览器的数据,Effetech Sniffer则安装后总是报错(PCAP error: Error opering the networking adapter!),好在URLSnooper实现了我的目的,分析到了如下数据:

POST /wzcx_1.asp HTTP/1.1

Accept: */*

Referer: http://www.hzti.com/search/wzseach.asp

Accept-Language: zh-cn

Content-Type: application/x-www-form-urlencoded

Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; i-NavFourF; TencentTraveler ; .NET CLR 1.1.4322; .NET CLR 2.0.50727)

Host: www.hzti.com

Content-Length: 51

Connection: Keep-Alive

Cache-Control: no-cache

Cookie: ASPSESSIONIDCQTCQQRR=GIGJOKMDNNBKAKEOMDHGLPEB

search_exist=1&search_value=a88124&search_cartype=0

将这些信息代入程序,成功的得到了预期的数据。。。。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有