印言之前沒有寫過爬蟲,最近被學長壓迫,所以迅速學習了一波爬蟲,這個過程十分的痛苦。
之前自己也沒有發部落格的習慣,- -彷彿發部落格是上個世紀的事情,之前也有很多技術學習,但沒有放到部落格上。
希望以後學了什麼技術可以發上來,既加深自己的印象,還幫助了大眾。
接下來說一說我爬取過程中遇到的坑。
怎麼解決這兩個坑呢?
先不著急,我們先來看看怎麼發起get,post請求。
string html = utils.gethtml(response.getentity.getcontent,"gb2312");這樣就可以獲得cookie,和html頁面內容,當然還有其他方法,稍微看一下api就知道具體有什麼方法了,基本從名字就可以看出來時幹什麼用的了。
然後utils.gethtml是我自己的乙個靜態方法,**如下。
public string gethtml(inputstream inputstream,string encoding)throws ioexception
is.close();
return
new string(bos.tobytearray(), encoding);
}
接下來是post請求。
post請求你總是要post點東西的嘛,所以先構造body的。
所以**如下
//開始構造body
listpostbody = new arraylist<>();
postbody.add(new basicnamevaluepair("__viewstate",viewstate));
postbody.add(new basicnamevaluepair("username",username));
postbody.add(new basicnamevaluepair("password",password));
postbody.addheader("user-agent",user-agent);
//body構造結束,開始處理編碼格式
urlencodedformentity gb_2312 = new urlencodedformentity(postbody,"gb2312");
post.setentity(gb_2312);
//當然還可以給任何乙個http使用**,對我來說使用**的好處是可以用burpsuite來看httphistory,檢視自己傳送的請求具體是什麼。
post.setconfig(requestconfig.custom().setproxy(proxy).build());
closeableresponse postresponse = client.execute(postbody);然後就拿到postresponse,用jsoup解析。
string html = utils.gethtml(postresponse.getentity().getcontext(),"gb2312");
document document = jsoup.parse(html);
elements elements = document.select("input[name=__viewstate]");
然後就把需要的內容爬下來了。
不是說要解決那兩個坑的嗎?
Java簡單爬蟲示例
步驟簡介 獲取鏈結文字內容 urlconnection例項呼叫getinputstream 獲取輸入流,並返回輸入流 inputstream 物件,初始化給inputstreamreader,將位元組流轉換為字元流,並指定字符集編碼utf 8。bufferedreader從字元流中逐行讀取文字存入s...
Java簡單網頁爬蟲
簡單原理就是使用apache訪問網頁,獲取網頁內容,然後根據匹配的開始和結束位置,得到想要的結果 首先需要引入apache的幾個包 import org.apache.http.util.entityutils 然後設定url,需要獲取的開始和結束位置的html,具體位置可以通過檢視網頁源 得到 p...
JAVA實現簡單網路爬蟲
這是我第一次寫部落格,所以寫的不算好,看到的人請見諒。gethtml 類,首先是url url1 new url url 模擬在網頁輸入 接著 urlconnection uc url1.openconnection 模擬敲回車鍵開啟該 頁面,後面的看注釋應該能看懂了。bf.readline 是依次...