Python 抓取猫眼电影 TOP100 数据
2024-02-21 23:54:16
从猫眼电影抓取 TOP100 数据:Python 指南
简介
猫眼电影是中国领先的电影票房数据平台,提供电影上映信息、票房数据和观众评论。对于电影爱好者、数据分析师和营销人员来说,掌握如何从猫眼电影获取数据至关重要。本指南将一步步教你如何使用 Python 抓取猫眼电影 TOP100 数据,包括电影名称、评分、演员和导演等信息。
抓取过程
1. 安装必要的 Python 库
在开始抓取之前,你需要安装以下 Python 库:
- requests:用于发送 HTTP 请求
- re:用于正则表达式
- Pandas:用于数据整理和分析
2. 发送 GET 请求
使用 requests 库向猫眼电影 TOP100 页面发送 GET 请求,获取 HTML 代码。
import requests
url = 'https://maoyan.com/board/4'
response = requests.get(url)
html = response.text
3. 提取数据
使用正则表达式从 HTML 代码中提取所需的数据:
- 电影名称:
<p class="name">.*?<a href=".*?" title=".*?">(.*?)</a></p>
- 电影评分:
<p class="score"><i class="integer">(.*?)</i><i class="fraction">(.*?)</i></p>
- 电影演员:
<p class="star">(.*?)</p>
- 电影导演:
<p class="director">(.*?)</p>
4. 整理数据
使用 Pandas 将提取的数据整理成一个结构化的表格:
import pandas as pd
data = {'电影名称': movie_names, '电影评分': movie_scores, '电影演员': movie_casts, '电影导演': movie_directors}
df = pd.DataFrame(data)
导出数据
最后,你可以将整理好的数据导出为 CSV 或 Excel 文件:
df.to_csv('cat_eye_top_100.csv')
df.to_excel('cat_eye_top_100.xlsx')
代码示例
以下完整的 Python 脚本将执行抓取和整理过程:
import requests
import re
import pandas as pd
url = 'https://maoyan.com/board/4'
response = requests.get(url)
html = response.text
movie_names = re.findall(r'<p class="name">.*?<a href=".*?" title=".*?">(.*?)</a></p>', html)
movie_scores = re.findall(r'<p class="score"><i class="integer">(.*?)</i><i class="fraction">(.*?)</i></p>', html)
movie_casts = re.findall(r'<p class="star">(.*?)</p>', html)
movie_directors = re.findall(r'<p class="director">(.*?)</p>', html)
data = {'电影名称': movie_names, '电影评分': movie_scores, '电影演员': movie_casts, '电影导演': movie_directors}
df = pd.DataFrame(data)
df.to_csv('cat_eye_top_100.csv')
df.to_excel('cat_eye_top_100.xlsx')
常见问题解答
Q1:我可以在其他电影类别中使用此脚本吗?
A: 是的,你可以修改 URL 以抓取不同类别的电影,例如国产电影、进口电影或动画电影。
Q2:我可以自定义导出的数据格式吗?
A: 是的,你可以使用 Pandas 的 to_json()
或 to_html()
方法将数据导出为其他格式。
Q3:如何处理缺失数据或错误数据?
A: 你可以使用 Pandas 的 fillna()
和 dropna()
方法来处理缺失数据,以及 astype()
方法来转换错误数据类型。
Q4:我可以抓取实时数据吗?
A: 否,此脚本抓取的是静态页面上的数据。要抓取实时数据,你需要使用猫眼电影提供的 API 或其他数据源。
Q5:我可以使用此脚本抓取其他电影网站的数据吗?
A: 是的,只要你了解目标网站的 HTML 结构并调整正则表达式即可。