日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

知乎爬虫之4:抓取页面数据

發布時間:2025/3/14 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 知乎爬虫之4:抓取页面数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

git爬蟲項目地址( 終于上傳代碼了~~~~關注和star在哪里):(已完結)

附贈之前爬取的數據一份(mysql): 鏈接:只下載不點贊,不star,差評差評~藍瘦香菇)

本文由博主原創,轉載請注明出處:知乎爬蟲之4:抓取頁面數據

咱們上一篇分析了知乎的登陸請求和如何拿到粉絲/關注的請求,那么咱們這篇就來研究下如何拿利用Jsoup到咱們想要的數據。
那么咱們說下,首先請求關注者和粉絲者是pcweb版本的,但是獲取頁面的是手機頁面的。
好,正題:

1.什么是Jsoup

jsoup 是一款Java 的HTML解析器,可直接解析某個URL地址、HTML文本內容。它提供了一套非常省力的API,可通過DOM,CSS以及類似于jQuery的操作方法來取出和操作數據。

2. HttpClient請求模擬

HttpClient 是 Apache Jakarta Common 下的子項目,可以用來提供高效的、最新的、功能豐富的支持 HTTP 協議的客戶端編程工具包,并且它支持 HTTP 協議最新的版本和建議。

3.走起頁面

首先模擬手機瀏覽器的UA。就是讓咱們打開的頁面返回的是移動端的頁面效果,那么最應該怎么怎么做呢?其實服務器判定你是ie還是chrome還是firefox是根據請求頭里面的UA實現的,因此咱們要找一個手機瀏覽器的UA。。
咱們可以某度一下或者直接在瀏覽器里面直接f12,模擬移動端,然后看請求參數:

User-Agent:Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36

妥妥的沒問題:


那咱們如何將這句體現到程序里面呢?
簡單,在咱們拿到get對象后直接設置:

httpGet.setHeader("User-Agent", "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36");

就ok了,然后咱們就可以用jsoup來拿咱們想要的元素了,jsoup的語法和jq如出一轍。
咱們直接對著頁面,右擊咱們想要的元素,選擇審查元素,然后用jq的選擇器選出來就好了。
可以參考jQuery 選擇器

4.拿到關注者

直接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
然后請求數據返回的是json

{"paging": {"is_end": false,"next": "https://www.zhihu.com/api/v4/members/Sweets07/followers?per_page=10&include=data%5B%2A%5D.answer_count%2Carticles_count%2Cfollower_count%2Cis_followed%2Cis_following%2Cbadge%5B%3F%28type%3Dbest_answerer%29%5D.topics&limit=10&offset=20","previous": "https://www.zhihu.com/api/v4/members/Sweets07/followers?per_page=10&include=data%5B%2A%5D.answer_count%2Carticles_count%2Cfollower_count%2Cis_followed%2Cis_following%2Cbadge%5B%3F%28type%3Dbest_answerer%29%5D.topics&limit=10&offset=0","is_start": false,"totals": 398},"data": [{"is_followed": true,"avatar_url_template": "https://pic1.zhimg.com/da8e974dc_{size}.jpg","name": "陳曉峰","url": "","type": "people","user_type": "people","answer_count": 0,"url_token": "chen-xiao-feng-84","headline": "阿里巴巴,分布式數據庫,","avatar_url": "https://pic1.zhimg.com/da8e974dc_is.jpg","is_following": false,"is_org": false,"follower_count": 14,"badge": [],"id": "ff02ea0544901a9ddfcb7ba60c73b673","articles_count": 0}] }

這個數據包括了下次請求地址,上次請求地址,時候是開始,時候是結束,共有多少粉絲,關注人基本信息,
因此咱們可以在一個while里來獲得所有粉絲數:
流程:

  • 第一次獲取數據
  • 獲取is_end字段
  • 判斷is_end時候為true
  • 根據is_end判斷是否繼續循環
  • 如果循環,更新is_end,更新下次請求連接
  • 一套下來,就能拿到一個用戶的所有粉絲了。


    吾愛Java(QQ群):170936712(點擊加入)

    轉載于:https://www.cnblogs.com/seven007/p/6248552.html

    總結

    以上是生活随笔為你收集整理的知乎爬虫之4:抓取页面数据的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。