用Post方式抓取一個網頁

這段時間接到一個抓取任務,任務的目標是,對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                    將這些信息代入程序,成功的得到了預期的數據。。。。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章