前段時間看到不少爬蟲的案例,有不少爬招聘網站數據的,還有房產中介數據的,固然也有不少爬取知乎用戶數據的,不少爬蟲都是用Python語言,可是我不會用它,只能用Java寫一個爬蟲來抓取知乎問題下答案的圖片連接git
先上一個下載的圖片的截圖github
看到網上這麼多人寫爬蟲,內心也是羨慕,想着本身何時也能夠寫一個簡單的爬蟲來了解下爬蟲的原理,這幾天剛開學,就嘗試來抓取知乎的圖片,主要是由於知乎某些問答的妹子都很好看……正則表達式
想辦法獲取圖片的連接,而後添加到一個容器中,依次下載,很簡單的json
一開始我單純的認爲只要獲取一個問答首頁的源碼,而後用正則表達式拿到圖片連接,接下來就不是事兒了。可是這樣作只能獲取到第一頁的數據api
下圖爲第一頁的數據,每個List-item就是一個回答,這兒一共才20條瀏覽器
點擊查看更多回答。F12
中打開network
選項卡,再選擇XHR
查看AJAX請求,發現有一個連接特別長,查看request
和response
,就發現了下圖中的東西多線程
查看請求的詳情,發現這個請求返回的是一個json數據
ide
這是一個實例連接:https://www.zhihu.com/api/v4/questions/38906616/answers?include=data%5B*%5D.is_normal%2Cadmin_closed_comment%2Creward_info%2Cis_collapsed%2Cannotation_action%2Cannotation_detail%2Ccollapse_reason%2Cis_sticky%2Ccollapsed_by%2Csuggest_edit%2Ccomment_count%2Ccan_comment%2Ccontent%2Ceditable_content%2Cvoteup_count%2Creshipment_settings%2Ccomment_permission%2Ccreated_time%2Cupdated_time%2Creview_info%2Cquestion%2Cexcerpt%2Crelationship.is_authorized%2Cis_author%2Cvoting%2Cis_thanked%2Cis_nothelp%2Cupvoted_followees%3Bdata%5B*%5D.mark_infos%5B*%5D.url%3Bdata%5B*%5D.author.follower_count%2Cbadge%5B%3F(type%3Dbest_answerer)%5D.topics&offset=3&limit=20&sort_by=default
工具
連接參數中的offset表示與第一個回答的偏移量,limit表示返回回答數據的條數測試
我覺得這樣就能夠了,用在線get工具測試了一下,看是否是相同的結果
結果響應了這樣的json數據,根據那個英語,猜想是沒有受權,因而去瀏覽器開發人員工具下尋找有沒有什麼特殊request
的Header
沒有添加,因而發現了一個authorization
的字段,故添加好header參數後再次嘗試,結果呢?此次就對了
若是問這個authorization
字段的值怎麼來的,其實我也不知道,我是複製的瀏覽器的數據
如今拿到了回答的json數據
通過分析,每個回答的json中有一個content屬性,這個屬性包含了回答的內容,其中就含有圖片的連接。到此,感受寄幾終於找到了光明
經過這個屬性的值,就能夠拿到圖片的連接。
返回的這個json數據中還包含回答的總數等內容,更多有用的就本身去挖掘了喲
使用這些jar包還須要其它依賴包
最後附上項目的github
地址Java抓取知乎圖片