爬虫获取豆瓣喜剧电影相关信息

利用Requests库爬取豆瓣喜剧电影排行榜 前两百部电影的相关信息

首先附上豆瓣电影的网站链接:

链接: link.

思考步骤:

右键网页 + 点击检查:
在这里插入图片描述
当我们下拉到第20部电影(蓝色圈)的时候 可以发现右边 network里面出现了请求
可以观察到 页面请求是get 并且 内容的格式(Content-Type) 为json
在这里插入图片描述
get() 请求里是不是可以添加params 参数呢
所以我们自定义params参数 通过get请求 返回给网页

param = {
            'type': '24',
            'interval_id': '100:90',
            'action': '',
            'start': 0,
            'limit': '20'
        }

通过返回这样的参数 我们可以获取前20部电影的相关信息

在抓取到页面的资源后 利用json格式获取数据:
在这里插入图片描述
如何获取json里面的数据?
easy: 我们通过取字典里面内容的方式就可以了

print(response.json()[0].get('title'))
print(response.json()[0].get('score'))
print(response.json()[0].get('regions'))

在这里插入图片描述

最后附上本文的代码:

#  在下拉的过程中 页面ajax动态刷新页面 利用抓包工具查看返回内容类型 get请求 返回特定的参数即可             
import requests
import json
import pandas as pd

if __name__ =="__main__":
    # 爬取豆瓣喜剧电影排行榜前200步电影的相关信息
    df = pd.DataFrame(columns=['电影名','评分','地区','地址','发布日期','评论人数'])
    url = 'https://movie.douban.com/j/chart/top_list'  # 豆瓣电影地址
    headers =  {
        "User-Agent" :"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36"
    }  # 利用 headers进行伪装

    for num in range(0,181,20):   # 页面是ajax动态刷新的 每下拉到二十部 就刷新一次页面  所以181的下标 包含了前200部
        param = {
            'type': '24',
            'interval_id': '100:90',
            'action': '',
            'start': num,
            'limit': '20'
        }
        response = requests.get(url=url,params=param,headers=headers)   # 页面为get请求 可以在网站的headers中看到
        content=response.json()  # Content-Type 为 json格式的数据 
        length=len(content)
        for i in range(0,length):
            s = pd.Series({'电影名':content[i].get('title'),
                            '评分':eval(content[i].get('score')), 
                           '地区':content[i].get('regions')[0] , 
                           '地址':content[i].get('url'),
                           '发布日期':content[i].get('release_date'),
                           '评论人数':content[i].get('vote_count')
                          })
            df = df.append(s, ignore_index=True)
            # 这里必须选择ignore_index=True 或者给 Series 一个index值
    df.to_csv('./douban_movie.csv',encoding='utf-8',index=False,index_label=None)

前200部电影结果展示:

在这里插入图片描述

在这里插入图片描述

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值