爬虫毕设(四):多页爬取和数据持久化

本文介绍了如何进行多页爬取和数据持久化。在多页爬取中,通过分析请求参数,实现了动态修改页码进行爬取。数据持久化部分,利用pipeline将数据保存为JSON文件。同时,文章还讨论了图片下载的实现,包括自定义图片文件名的方法。在遇到的报错问题中,提供了相应的解决方案。
摘要由CSDN通过智能技术生成

多页爬取

上次说到电视剧的列表信息是通过Ajax网络请求获取到数据的,当我们打开页面的时候,页面再向另一地址发出请求,得到数据后再渲染到网页上,我们是在network中找到的目标url。所以说,当我们想要爬取第二页,第三页以后的内容所要请求的url都可以在network中找到。

我们请求的目标url是https://movie.douban.com/j/search_subjects?type=tv&tag=热门&sort=recommend&page_limit=20&page_start=0,很明显请求是带了几个参数的,在network中找到它。

请求头参数

我们在请求头的参数里找到了,总共有五个参数,看字面意思很好理解:

  • type:tv,我们爬取的是电视剧,所以是tv;
  • tag:热门,我们选择的是热门标签;
  • sort:排序,我们选择的是recommend,按热度排序;
  • page_limit:页限制,每页的电视剧列表中含有20部电视剧;
  • page_start:每页是从第几部电视剧开始的,这里是0,也就是从头开始。

根据对参数的分析,我们只需要改动最后一个参数就可以了,所以我们就有了思路,在一个整数列表里循环,得到0、20、40…然后再转换为字符串拼接的前边的字符串中:

str(x) for x in range(0, 60, 20)

这里先爬取三页的做个示例,加入到__init__()中:

    def __init__(self, *args, **kwargs):
        super(tvSpider, self).__init__(*args, **kwargs)
        self.start_urls = ["https://movie.douban.com/j/search_subjects?type=tv&tag=热门&sort=recommend&page_limit=20&page_start=" +<
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值