本文由博主原创,转载请注明出处:知乎爬虫之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 爬数据工具 知乎_知乎爬虫之4:抓取页面数据相关推荐

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

    git爬虫项目地址( 终于上传代码了~~~~关注和star在哪里):https://github.com/MatrixSeven/ZhihuSpider(已完结) 附赠之前爬取的数据一份(mysql) ...

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

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

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

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

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

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

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

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

  6. python爬虫关键词抓手机号_通过Python爬虫按关键词抓取相关的新闻

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 如今各大网站的反爬机制已经可以说是到了丧心病狂的程度,比如大众点评的字符加 ...

  7. python抓取页面数据实例

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

  8. python怎么爬虎牙_使用python爬虫框架scrapy抓取虎牙主播数据

    前言 本文利用python的scrapy框架对虎牙web端的主播.主播订阅数.主播当前观看人数等基本数据进行抓取,并将抓取到的数据以csv格数输出,以及存储到mongodb中 思路 观察虎牙网站后确认 ...

  9. java抓取页面数据_通过java抓取任何指定网页的数据

    假设你需要获取51job人才网上java人才的需求数量,首先你需要分析51job网站的搜索这一块是怎么运作的,通过解析网页的源代码,我们发现了以下一些信息: 1. 搜索时页面请求的URL是 http: ...

最新文章

  1. Learning Perl学习笔记(1)第二章Scalar Data
  2. IT兄弟连 JavaWeb教程 jQuery中其他AJAX支持的函数
  3. SparkSQL之操作Mysql
  4. sketch放入app组件_使用Sketch App设计CSS网格
  5. AT2390-[AGC016F]Games on DAG【状压dp,SG函数】
  6. Python中浅拷贝和深拷贝的理解与研究
  7. python字符串的美化_shell 下使用python 美化输出json
  8. Spring框架学习[IoC容器高级特性]
  9. linux下查看pck设备,Linux中查看硬件信息超强命令sar
  10. python斜率转换为航向0-360_机器学习模型之LinearRegression(Python学习笔记)
  11. 去年北京居民服务消费快速增长 占消费支出半壁江山
  12. MongoDB应用场景及选型(海量数据存储选型)
  13. 采样频率Hz 采样率KSPS或MSPS,两种单位的换算关系
  14. oracle中execute函数,oracle中execute immediate的使用(select/insert/update/delete)详解
  15. 自定义一个可滑动时间刻度尺
  16. ISP AWB自动白平衡包含一段简单的色温估计进行白平衡调节的程序
  17. Oracle——函数(单行函数、分组函数、分析函数)
  18. Zabbix监控系统系列之五:SNMP监控Windows客户端
  19. Android开发工程师文集-layout_weight讲解
  20. iBus拼音输入法导入搜狗词库

热门文章

  1. idata 单片机 新唐_新唐单片机代码评审总结
  2. Android 内存泄露分析
  3. 电脑开机黑屏,只有一个鼠标箭头
  4. eyoucms如何判断第一条和最后一条数据
  5. [Hadoop]HDFS机架感知策略
  6. 趣味数学:解24点游戏小技巧
  7. 趣图:大佬如何解决bug的
  8. ”Could not find tag for codec none in stream #0, codec not currently supported in container”的解决方法
  9. ubuntu和Windows双系统开机直接进入Windows,双系统添加Ubuntu引导
  10. GIS十问之一:到底什么单位招聘GIS专业的学生?