1. B站博人传评论数据爬取简介
今天想了半天不知道抓啥,去B站看跳舞的小姐姐,忽然看到了评论,那就抓取一下B站的评论数据,视频动画那么多,也不知道抓取哪个,选了一个博人传跟火影相关的,抓取看看。网址: https://www.bilibili.com/bangumi/media/md5978/?from=search&seid=16013388136765436883#short
在这个网页看到了18560条短评,数据量也不大,抓取看看,使用的还是scrapy。
2. B站博人传评论数据案例---获取链接
从开发者工具中你能轻易的得到如下链接,有链接之后就好办了,如何创建项目就不在啰嗦了,我们直接进入主题。
我在代码中的parse函数中,设定了两个yield一个用来返回items 一个用来返回requests。
然后实现一个新的功能,每次访问切换UA,这个点我们需要使用到中间件技术。
3. B站博人传评论数据案例---实现随机UA
第一步, 在settings文件中添加一些UserAgent,我从互联网找了一些
第二步,在settings文件中设置 “DOWNLOADER_MIDDLEWARES”
第三步,在 middlewares.py 文件中导入 settings模块中的 USER_AGENT_LIST 方法
好了,随机的UA已经实现,你可以在parse函数中编写如下代码进行测试
4. B站博人传评论数据----完善item
这个操作相对简单,这些数据就是我们要保存的数据了。!
5. B站博人传评论数据案例---提高爬取速度
在settings.py中设置如下参数:
解释说明
一、降低下载延迟
DOWNLOAD_DELAY = 0
将下载延迟设为0,这时需要相应的防ban措施,一般使用user agent轮转,构建user agent池,轮流选择其中之一来作为user agent。
二、多线程
CONCURRENT_REQUESTS = 32
CONCURRENT_REQUESTS_PER_DOMAIN = 16
CONCURRENT_REQUESTS_PER_IP = 16
scrapy网络请求是基于Twisted,而Twisted默认支持多线程,而且scrapy默认也是通过多线程请求的,并且支持多核CPU的并发,我们通过一些设置提高scrapy的并发数可以提高爬取速度。
三、禁用cookies
COOKIES_ENABLED = False
6. B站博人传评论数据案例---保存数据
最后在pipelines.py 文件中,编写保存代码即可
运行代码之后,发现过了一会报错了
去看了一眼,原来是数据爬取完毕~!!!