猫眼电影影评爬取

前言

前段时间,热播的电影《少年的你》,不知道大家看了吗?反正,我是看完了,至于这部电影怎么样,我就不做评论了,这个任务还是留给网友去做吧!好了,进入正题,今天我们要做的是猫眼电影影评的爬取。
下面我以电影《少年的你》为例进行分析。
在这里插入图片描述

思路分析

电影的影评接口如下(这个可以在网上搜到,也可以自己抓包分析):
http://m.maoyan.com/mmdb/comments/movie/1218029.json?v=yes&offset=0
这里简单的分析一下参数的含义:
1218029:猫眼电影的ID(这里就是《少年的你》的电影ID了)
offset:偏移,貌似是依次增加15
我们可以每次增加offset来进行爬取,即让offset每次增加15。我们通过这种方式来构造URL,发送请求即可。
关于数据存取,我们可以存储到数据库,也可保存到文件,这里由于我爬取的数据较少,就直接保存到文件了。
通过这个URL请求返回的是json数据,我们可以用Python的json模块进行解析,再用pandas保存成CSV文件就行了。

完整代码

# !/usr/bin/env python
# —*— coding: utf-8 —*—
# @Time:    2020/1/22 16:47
# @Author:  Martin
# @File:    maoyan.py
# @Software:PyCharm
import requests
import pandas as pd
import json
# 猫眼电影的ID
film_id = '1218029'
# 请求的URL
raw_url = 'http://m.maoyan.com/mmdb/comments/movie/'+film_id+'.json?_v_=yes&offset=%d'
# 伪装请求头部
headers = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Cache-Control': 'max-age=0',
    'Host': 'm.maoyan.com',
    'Proxy-Connection': 'keep-alive',
    'Upgrade-Insecure-Requests': '1',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36'
}
# 保存结果的列表
result = []
for i in range(0, 1000, 15):
    url = raw_url % i
    r = requests.get(url, headers=headers)
    data = json.loads(r.text)
    result = result + data['cmts']
    print("offset: ", i)
# 将数据存储到文件
df = pd.DataFrame(result)
df.to_csv('./result/maoyan.csv', index=False, index_label=False, na_rep='NULL', encoding='utf_8_sig')

总结

缺点: 用这个方法请求URL,获得的数据有上限,好像超过1000就不行了,具体的解决思路,等以后有了思路再分享。
踩过的坑: 遇到的问题是编码问题,一开始保存的数据中,总是出现乱码现象,这里特别注意要将编码方式设置成 utf_8_sig

发布了122 篇原创文章 · 获赞 191 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/Deep___Learning/article/details/104079588