我想自己用爬虫一下获取中国高票房的电影数据,然后分析一下。
数据来源于淘票票:影片总票房排行榜 (maoyan.com)
爬它就行。
代码实现
首先爬虫获取数据:
数据获取
导入包
import requests; import pandas as pd
from bs4 import BeautifulSoup
传入网页和请求头
url = 'https://piaofang.maoyan.com/rankings/year'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.62'}
response1 = requests.get(url,headers=headers)
response.status_code
200表示获取网页文件成功
然后解析网页文件,获取电影信息数据
%%time
soup = BeautifulSoup(response.text, 'html.parser')
soup=soup.find('div', id='ranks-list')
movie_list = []
for ul_tag in soup.find_all('ul', class_='row'):
movie_info = {}
li_tags = ul_tag.find_all('li')
movie_info['序号'] = li_tags[0].text
movie_info['标题'] = li_tags[1].find('p', class_='first-line').text
movie_info['上映日期'] = li_tags[1].find('p', class_='second-line').text
movie_info['票房(亿)'] = f'{(float(li_tags[2].text)/10000):.2f}'
movie_info['平均票价'] = li_tags[3].text
movie_info['平均人次'] = li_tags[4].text
movie_list.append(movie_info)
数据获取完成了! 查看字典数据:
movie_list
可以,很标准,没什么问题,然后把它变成数据框,查看前三行
movies=pd.DataFrame(movie_list)
movies.head(3)
对数据进行一定的清洗,我们看到上映日期里面的数据有“上映”两个字,我们要去掉,然后把它变成时间格式,票房,票价,人次都要变成数值型数据。
我们只取票房前250的电影,对应豆瓣250.,中国票房250好叭
然后我们还需要从日期里面抽取年份和月份两列数据,方便后面分析。
#