翻页爬取豆瓣电影名称和评分

翻页爬取豆瓣电影名称和评分

分析:

1.爬取翻页数据重点在于翻页的操作,由于每一页发送请求,解析和保存数据的方式都是一样的,因此通过找到每一页url的规律,利用for循环进行翻页即可。
2.爬取的数据为json格式,因此需要通过json()方法转成python格式进行操作
3.数据解析,在利用jsonpath解析数据时,我们可以通过响应数据放在JSON在线解析中找到名称和评分所在的节点。
4.在同一文件保存多个文本数据时,写入方式需要用a追加的方式。

本次案例以豆瓣电影的经典电影为例:

找到页面信息的url并查看响应(相应类型为json格式)
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

第一页的url:https://movie.douban.com/j/search_subjectstype=movie&tag=%E7%BB%8F%E5%85%B8&sort=recommend&page_limit=20&page_start=0
第二页的url:https://movie.douban.com/j/search_subjectstype=movie&tag=%E7%BB%8F%E5%85%B8&sort=recommend&page_limit=20&page_start=20

由上述url可知,url的不同在于参数page_start
第一页page_start=0
第二页page_start=20
那么我们for循环的规律也就显而易见。

通过JSON在先进行数据解析,找到目标数据所在的节点。
在这里插入图片描述

翻页的规律和解析的方法已经找到,那么开始我们的代码

import requests
import jsonpath
import json

if __name__ == '__main__':
    # 输入爬取的页数
    pages = int(input('请输入爬取的页数:'))
    for i in range(pages):
        page_start = i*20
        # 确认目标的url
        url = f'https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%BB%8F%E5%85%B8&sort=recommend&page_limit=20&page_start={page_start}'
        # 构造请求头参数
        headers = {
            'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36'
        }
        # 发送请求,获取响应
        response = requests.get(url,headers=headers)
        # 将json数据转换成py数据
        py_data = response.json()
        # 提取文本中的目标数据:电影名称,电影评分
        title_list = jsonpath.jsonpath(py_data,'$..title')
        rate_list = jsonpath.jsonpath(py_data,'$..rate')
        # 将名称和评分放进字典,保存为json文件
        for i in range(len(title_list)):
            dict_ = {}
            dict_[title_list[i]] = rate_list[i]
            # 将字典转换成json格式
            json_data = json.dumps(dict_,ensure_ascii=False)+',\n'
            # 保存到本地
            with open('翻页豆瓣电影评分.json','a',encoding='utf-8')as f:
                f.write(json_data)


爬取3页数据,每一页对应20个电影数据,那么结果数据就是60个电影的数据
在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜的乄第七章

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值