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