源码链接:https://pan.baidu.com/s/1oOAxJqSMCyVJPNv-iAYW7A
提取码:1co9

Java+Jsoup爬虫小红书,微博,B站
爬取地址:https://www.bilibili.com/video/BV1HE411b7nj
目标:抓取视频的点赞量,投币量,收藏量,转发量

Java+Jsoup爬虫B站

1.F12分析下页面
Java+Jsoup爬虫B站
点赞量:#arc_toolbar_report下面的.like
投币量:#arc_toolbar_report下面的.coin
收藏量:#arc_toolbar_report下面的.collect
转发量:#arc_toolbar_report下面的.share

2.使用Jsoup进行抓取
这里发现,使用Jsoup取到的静态页面中没有这些数据,而是JS数据渲染,要请求接口的
Java+Jsoup爬虫B站
3.分析下问题所在,并解决

F12看下B站接口
Java+Jsoup爬虫B站
Java+Jsoup爬虫B站
这个接口里有我们要的数据,它只需要一个aid,然后请求下接口就可以获取到想要的值了,但是aid要从哪里获取呢?

Jsoup抓取的静态页面解析出aid即可!

Java+Jsoup爬虫B站
aid在这里,想尽一切方法,取出来就行,如何取出

分析了一下后,我决定用正则方式删选出要的数据,在替换掉前后符号,在转为json,调出aid即可

开头:window.INITIAL_STATE={
结尾:}};

就拿到了这一行
Java+Jsoup爬虫B站

替换前:window.INITIAL_STATE={
替换后 {

替换前:}}
替换后 }

Java+Jsoup爬虫B站

转换为json类型,就可以取出aid

然后使用请求一下接口既可以取到数据了
Java+Jsoup爬虫B站

相关文章: