git爬虫项目地址( 终于上传代码了~~~~关注和star在哪里):https://github.com/MatrixSeven/ZhihuSpider(已完结)

附赠之前爬取的数据一份(mysql): 链接:https://github.com/MatrixSeven/ZhihuSpider/README.MD 只下载不点赞,不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里来获得所有粉丝数:
流程:

  1. 第一次获取数据
  2. 获取is_end字段
  3. 判断is_end时候为true
  4. 根据is_end判断是否继续循环
  5. 如果循环,更新is_end,更新下次请求连接

一套下来,就能拿到一个用户的所有粉丝了。

吾爱Java(QQ群):170936712(点击加入)

转载于:https://www.cnblogs.com/seven007/p/6248552.html

知乎爬虫之4:抓取页面数据相关推荐

  1. java 爬数据工具 知乎_知乎爬虫之4:抓取页面数据

    本文由博主原创,转载请注明出处:知乎爬虫之4:抓取页面数据 咱们上一篇分析了知乎的登陆请求和如何拿到粉丝/关注的请求,那么咱们这篇就来研究下如何拿利用Jsoup到咱们想要的数据. 那么咱们说下,首先请 ...

  2. 爬虫抓取页面数据原理(php爬虫框架有很多 )

    爬虫抓取页面数据原理(php爬虫框架有很多 ) 一.总结 1.php爬虫框架有很多,包括很多傻瓜式的软件 2.照以前写过java爬虫的例子来看,真的非常简单,就是一个获取网页数据的类或者方法(这里的话 ...

  3. Colly 学习笔记(二)——爬虫框架,抓取下载数据(上证A股数据下载)

    Colly 学习笔记(二)--爬虫框架,抓取下载数据(上证A股数据下载) Colly 学习笔记(一)--爬虫框架,抓取中金公司行业市盈率数据 Colly 学习笔记(二)--爬虫框架,抓取下载数据(上证 ...

  4. 逆向爬虫18 Scrapy抓取全站数据和Redis入门

    逆向爬虫18 Scrapy抓取全站数据和Redis入门 一.全站数据抓取 1. 什么是抓取全站数据? 我们曾经在过猪八戒,图片之家,BOSS直聘等网站,利用网站官方提供的搜索功能,搜索指定关键词的内容 ...

  5. PHP利用正则表达式抓取页面数据

    PHP利用正则表达式抓取页面数据 (记录一下,00后程序员第一天写博客,2021/4/1) (抓取招头标网站中的数据) <?php header('Content-Type:text/html; ...

  6. python抓取页面数据实例

    抓取文章数据保存在本地 #coding=utf-8 import urllib import redef getHtml(url):page = urllib.urlopen(url)html = p ...

  7. java 知网爬虫_怎样抓取中国知网数据

    2,快捷采集的使用方法:如何使用快捷采集 在中国知网通过高级检索,输入关键词后抓取相关文章的标题.作者.摘要.关键词等信息.但是中国知网在输入关键词搜索后网址并不会发生变化,所以在抓取的时候我们需要爬 ...

  8. python保存图片到指定路径_python 抓取页面数据,并保存图片文本到指定目录文件夹...

    这个爬虫主要利用scrapy+beautifulsoup完成,其中图片保存碰到了一个大坑,花了一天的时间才解决. 大坑就是:在抓取文章页指定区域所有图片的时候,刚好那块区域的图片所有页面都一样,导致图 ...

  9. 【爬虫】Scrapy 抓取网站数据

    [原文链接]http://chenqx.github.io/2014/11/09/Scrapy-Tutorial-for-BBSSpider/ Scrapy Tutorial 接下来以爬取饮水思源BB ...

最新文章

  1. Error opening terminal: xterm-256color
  2. Java HashMap元素取值
  3. python pyquery安装_win7下python安装pyquery
  4. Spark Streaming中流式计算的困境与解决之道
  5. 苏宁易购:苏宁控股、苏宁电器合计质押约5.18亿股公司股份
  6. 95-30-009-Channel-总述
  7. 洛谷 [P2964] 硬币的游戏
  8. 多线程之wait和notify使用注意事项
  9. 二叉查找树--插入、查找、遍历、打印、删除(重点)
  10. jQuery.each方法
  11. C++ 4 C++变量及作用域
  12. opencv检测相交点_OpenCV学习18--霍夫变换检测直线
  13. ulipad.4.1.zip linux,在ubuntu中安装ulipad
  14. Redis的基本操作
  15. 关系型数据库的一对一、一对多、多对一、多对多关系
  16. sonar代码审查问题分析
  17. 探访北大最AI的食堂!刷脸打饭,机器认识200多道菜
  18. MaxCompute 助力衣二三构建智能化运营工具
  19. Number isFinite()方法
  20. HTML5 语音搜索

热门文章

  1. 线程间通讯机制(提高篇)——深入浅出实现原理
  2. java获取当前工作目录
  3. 区块链应用于供应链金融的完整解决方案
  4. python程序员编辑器_5款Python程序员高频使用开发工具推荐
  5. linux镜像文件不要大于4g,Systemback制作大于4G的Ubuntu系统镜像
  6. 下列符合c语言语法的字符常量是,C语言程序设计(周经亚)选择题练习-chapter 5.doc...
  7. c++ map用法_Python专题——五分钟带你了解map、reduce和filter
  8. 路由器安置(Routing)
  9. 计算机视觉 - 知识点总结(面试、笔试)
  10. BZOJ 3218 UOJ #77 A+B Problem (主席树、最小割)