
文章插图
第 2 页 URL 地址:
http://capi.douyucdn.cn/api/v1/getVerticalRoom?limit=20&offset=20

文章插图
第 20 页地址:
http://capi.douyucdn.cn/api/v1/getVerticalRoom?limit=20&offset=400

文章插图
第 35 页地址:

文章插图
显示如上 , 表示数据没有35页 。
【limit】:表示每页20条数据 , 每页偏移量是20 。
【offset】:表示页数 。
把第 1 页的返回的 json 格式的数据拷贝 , 通过 json 在线解析工具(https://www.json.cn/)对数据进行解析 , 如下:

文章插图
其中每一页20条数据 , 每条数据显示如下:

文章插图
第三步:创建 scrapy 爬虫项目 。
在 dos下切换到目录
D:scrapy_project

文章插图
新建一个新的爬虫项目:scrapy startproject douyu

文章插图

文章插图
第四步:明确需要爬取的字段 , 编写 items 文件 。

文章插图
对于上面的信息 , 我们只抓取 2 个字段(昵称和图片链接) 。
为了保存图片 , 还需增加一个图片保存路径的字段 。
编写 Items.py 文件 。
import scrapy
class DouyuItem(scrapy.Item):
# define the fields for your item here like:
#昵称
nickname = scrapy.Field()
#图片下载链接
imagelink = scrapy.Field()
#图片下载的本地保存路径
imagePath = scrapy.Field()
第五步:新建爬虫 , 编写爬虫文件 。
在 DOS 下切换目录
D:scrapy_projectdouyudouyuspiders
执行命令新建爬虫命令:
scrapy genspider douyuMM "capi.douyucdn.cn"

文章插图

文章插图
编写爬虫文件 。
import scrapy,sys,os
import json
path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
sys.path.append(path)
from douyu.items import DouyuItem
class DouyummSpider(scrapy.Spider):
#爬虫名
name = "douyuMM"
#允许爬虫作用的范围
allowed_domains = ["capi.douyucdn.cn"]
# URL 变量
offset = 0
#基础的 URL
url = "http://capi.douyucdn.cn/api/v1/getVerticalRoom?limit=20&offset="
# 爬虫起始的url
start_urls = [url + str(offset)]
def parse(self, response):
# 请求返回的数据是json格式 , 需要把json格式的数据转换为 Python 格式 , data 段是列表
data = https://www.isolves.com/it/cxkf/bk/2021-04-12/json.loads(response.text)["data"]
for each in data:
#定义一个Item 对象 , 用来保存数据的
item = DouyuItem()
# 取 data 列表中的值 , 放到 Item 对象中
item["nickname"] = each["nickname"]
item["imagelink"] = each["vertical_src"]
## 将获取的数据交给管道文件 pipelines , yield的作用是把一个函数当成一个生成器 , 程序每次执行到yield时 , 返回一个值 , 程序会先暂停 , 下次调用再返回一个值 , 程序会接着暂停....
yield item
if self.offset < 400:
self.offset += 20
# 每次处理完一页的数据之后 , 重新发送下一页页面请求
# self.offset自增20 , 同时拼接为新的 url , 并调用回调函数 self.parse 处理 Response
yield scrapy.Request(self.url + str(self.offset), callback = self.parse)
第六步:分析 pipelines 管道文件处理的数据类型 。
第一个案例讲的 pipelines 管道文件处理的是 html 页面的静态文本 , 这个案例需要处理的是图片 , 需要把图片下载下来 , 需要对 Settings.py 文件进行相应的配置 。
推荐阅读
- 七种颜色搭配方案,养生茶营销策划方案完整版
- Python爬虫练习:爬取800多所大学学校排名、星级等
- 麻将多少张?
- 大蛇2电影国语完整版免费观看 大蛇2免费完整版在线西瓜
- 7500航班真实情况 7500鬼航班完整版
- Python爬虫案例,腾讯动漫爬虫,步骤超详细解释,源码分析
- 书中自有黄金屋完整诗句?书中自有黄金屋的下一句是什么_1
- 四种Python爬虫常用的定位元素方法对比,你偏爱哪一款?
- Pyppeteer爬虫神器详解
- 破了这几种爬虫加密算法后,我的路更近了「JS逆向3」
