06.02 Java爬蟲教程,如何破解表單提交的數據參數

在編寫爬蟲程序的時候,一般的url中會攜帶頁碼的參數,例如某平臺的主頁:

*******************/all?page=3&isAjax=1,其中page就代表頁碼,在爬取的時候只需要利用for循環,將page的值分別設置為1、2、3等即可。

但是有些網站的url屬於不會變化的,即其參數所在的位置並不存在於url當中,例如下圖中的網站,當你翻頁的時候url並不會改變,這時,如果要得到該網站前三頁公司名稱數據,該如何操作呢?

Java爬蟲教程,如何破解表單提交的數據參數

Java爬蟲教程,如何破解表單提交的數據參數

首先打開網站,然後打開F12檢查頁面元素,發現此處有一項參數,位於FormDate下,在頁碼變動時,該參數的值也會跟著變動。這時可初步判斷該參數跟頁碼有關。

Java爬蟲教程,如何破解表單提交的數據參數

但是對於這個網站,採用傳統的拼接url方式爬蟲將無法獲取頁面數據,因為在url中攜帶參數屬於get請求。而get請求和post請求最直觀的區別就是post請求所攜帶的參數是存於form表單當中的,此時正需要以模擬表單提交的方式來請求頁面,具體代碼如下:

Java爬蟲教程,如何破解表單提交的數據參數

Java爬蟲教程,如何破解表單提交的數據參數

圖中使用NameValuePair的類,這個類是原生Httpclient中自帶的類,經常被用於拼湊post請求參數。此時封裝好請求併發送,會返回該網站中實際的html數據,接下來在通過Jsoup對數據進行簡單的處理,即可得到公司的名稱。

Java爬蟲教程,如何破解表單提交的數據參數

需要源碼請私信,歡迎大家一起交流爬蟲方面的經驗


分享到:


相關文章: