知乎爬虫之4:抓取页面数据
git爬蟲項(xiàng)目地址( 終于上傳代碼了~~~~關(guān)注和star在哪里):https://github.com/MatrixSeven/ZhihuSpider(已完結(jié))
附贈之前爬取的數(shù)據(jù)一份(mysql): 鏈接:https://github.com/MatrixSeven/ZhihuSpider/README.MD?只下載不點(diǎn)贊,不star,差評差評~藍(lán)瘦香菇)
本文由博主原創(chuàng),轉(zhuǎn)載請注明出處:知乎爬蟲之4:抓取頁面數(shù)據(jù)
咱們上一篇分析了知乎的登陸請求和如何拿到粉絲/關(guān)注的請求,那么咱們這篇就來研究下如何拿利用Jsoup到咱們想要的數(shù)據(jù)。
那么咱們說下,首先請求關(guān)注者和粉絲者是pcweb版本的,但是獲取頁面的是手機(jī)頁面的。
好,正題:
1.什么是Jsoup
jsoup 是一款Java 的HTML解析器,可直接解析某個URL地址、HTML文本內(nèi)容。它提供了一套非常省力的API,可通過DOM,CSS以及類似于jQuery的操作方法來取出和操作數(shù)據(jù)。
2. HttpClient請求模擬
HttpClient 是 Apache Jakarta Common 下的子項(xiàng)目,可以用來提供高效的、最新的、功能豐富的支持 HTTP 協(xié)議的客戶端編程工具包,并且它支持 HTTP 協(xié)議最新的版本和建議。
3.走起頁面
首先模擬手機(jī)瀏覽器的UA。就是讓咱們打開的頁面返回的是移動端的頁面效果,那么最應(yīng)該怎么怎么做呢?其實(shí)服務(wù)器判定你是ie還是chrome還是firefox是根據(jù)請求頭里面的UA實(shí)現(xiàn)的,因此咱們要找一個手機(jī)瀏覽器的UA。。
咱們可以某度一下或者直接在瀏覽器里面直接f12,模擬移動端,然后看請求參數(shù):
妥妥的沒問題:
那咱們?nèi)绾螌⑦@句體現(xiàn)到程序里面呢?
簡單,在咱們拿到get對象后直接設(shè)置:
就ok了,然后咱們就可以用jsoup來拿咱們想要的元素了,jsoup的語法和jq如出一轍。
咱們直接對著頁面,右擊咱們想要的元素,選擇審查元素,然后用jq的選擇器選出來就好了。
可以參考jQuery 選擇器
4.拿到關(guān)注者
直接get咱們之前分析的請求地址
https://www.zhihu.com/api/v4/members/Sweets07/followers?per_page=10& include=data%5B%2A%5D.employments%2Ccover_url%2Callow_message%2Canswer_coun t%2Carticles_count%2Cfavorite_count%2Cfollower_count%2Cgender%2Cis_followe d%2Cmessage_thread_token%2Cis_following%2Cbadge%5B%3F%28type%3Dbest_answerer %29%5D.topics&limit=10&offset=30不過要記得替換用戶名字和在請求頭里加入cookie的最后一段zc_0
然后請求數(shù)據(jù)返回的是json
這個數(shù)據(jù)包括了下次請求地址,上次請求地址,時候是開始,時候是結(jié)束,共有多少粉絲,關(guān)注人基本信息,
因此咱們可以在一個while里來獲得所有粉絲數(shù):
流程:
一套下來,就能拿到一個用戶的所有粉絲了。
吾愛Java(QQ群):170936712(點(diǎn)擊加入)
轉(zhuǎn)載于:https://www.cnblogs.com/seven007/p/6248552.html
總結(jié)
以上是生活随笔為你收集整理的知乎爬虫之4:抓取页面数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux系统下使用xampp 丢失my
- 下一篇: BZOJ3160:万径人踪灭