抓取今日头条文章
总阅读次
本文介绍爬取今日头条文章方式,并使用jsoup工具实现内容爬取,该工具可以像使用jquery一样查找html元素
抓取内容如下
就是爬取某个写手的信息、文章列表、和文字详情信息,具体如下图:
文章作者信息
也就是文章作者管理
客户端提供文章作者首页地址,http://www.toutiao.com/c/user/6310889977/
通过如下方式可以获取到作者信息:
|
|
输出如下
|
|
文章列表
抓取选择作者的文章列表,在这里需要使用到上面拼接的url,http://www.toutiao.com/c/user/article?page_type=1&user_id=6310889977&max_behot_time=0&count=30&as=A18539E7A918279&cp=5979A8F29759AE1
这个url返回json,通过我们的json请求方式即可。
介绍一下url请求的参数:
- page_type 0表示视频,1表示文章
- user_id 表示作者id
- max_behot_time 这个字段是用来翻页使用的,默认数据是0,其实值就是时间戳/1000
- count 每页显示记录数
- as 这个具体不太清楚
- cp 这个具体不太清楚
响应数据详解
这里建议使用爬取的当前的时间戳作为max_behot_time
字段的参数,为什么要这样,因为如果使用默认的值,则是按照阅读数排序的,当重复爬取的时候不容易判断重复。下面的数据是通过http://www.toutiao.com/c/user/article/?page_type=1&user_id=6310889977&max_behot_time=1501146065&count=2&as=A18539E7A918279&cp=5979A8F29759AE1
获取的
|
|
主要字段介绍:
- max_behot_time 下一页开始的值
- image_url 文章列表展示图片的url
- title 文章的标题
- source 来源,作者名称
- go_detail_count 阅读量
- source_url 详情url
- item_id 文章id
- behot_time 文章发表时间
重复抓取
考虑到文章将是大量的数据,而且结合前面通过时间戳进行查询可以。我们可以通过制定规则,避免爬取时都将文章挨个比较。实现方式如下
我们制定的规则是每天爬取一次相关作者的文章
如果是第一次爬取该作者的文章,则请求列表的url的参数max_behot_time为当前时间戳/1000,自定义设定 count 字段,建议不能超过50条。按照上面介绍的翻页方式依次爬取。
如果爬取的作者已经爬取过文章,则请求列表的url的参数 max_behot_time 为当前时间戳/1000,自定义设定 count 字段,建议不超过10条。将爬取处理的第一条(表示是最新的)数据的behot_time 字段转换成日期格式,转换的时候需要*1000,如果第一条的发布时间都不在今天的话,就无须在往后爬取了。
文章详情
抓取文章的详情,通过url http://www.toutiao.com/i6277404061113254402/
这个url就是通过 http://www.toutiao.com和列表响应的source_url 拼接而成。获取方式如下:
|
|
|
|
注意点
这里是有了jsoup
这个工具包还有解析json的工具包,记得引入maven坐标:
|
|
欢迎评论交流,谢谢!!