爬虫初学者实战之爬取豆瓣电影喜剧榜top50并输出为excel
只用简单的requests模块,跟着操作就能成功。
准备工作:
jupyter notebook,Windows10
正式开始爬取:
pip install requests
pip install pandas
安装完成后导入
import requests
import pandas as pd
指定一下url:
url="https://movie.douban.com/j/chart/top_list"
设置参数:
参数怎么来呢?我们需要打开上面的url,然后按照分类进入到喜剧电影排行榜中,按F12,如下:
观察不难发现,这里的start就是起始位置,limit就是输出榜单多少位。
param={
'type': '24',
'interval_id':'100:90',
'action': '',
'start': '0',#开始位置
'limit': '50',#一次有多少
}
然后进行一下UA伪装:
获取自己电脑的User-Agent信息,只需要在网址栏输入#about:version,用户代理就是你的电脑的请求头(User-Agent)。
headers={
'User-Agent':"这里粘贴你的请求头信息"
}
response=requests.get(url=url,params=param,headers=headers)
response=response.json()
print(response)
我们打印response来观察一下:
不难发现其是一堆字典,那么,就可以请出我们的杀器,pandas,pandas可以把字典转为dataframe,并进行一系列数据处理。
先把这个字典转为dataframe
movie=pd.DataFrame(response)
movie
可以发现,其中有很多我们不需要的东西,我们可以随便处理一下
movie.drop(['actor_count'],axis=1,inplace=True)
movie.drop(['id'],axis=1,inplace=True)
movie.drop(['is_playable'],axis=1,inplace=True)
movie.drop(['is_watched'],axis=1,inplace=True)
movie.drop(['rank'],axis=1,inplace=True)
movie.drop(['rating'],axis=1,inplace=True)
movie.drop(['vote_count'],axis=1,inplace=True)
movie.drop(['cover_url'],axis=1,inplace=True)
当然,数据处理的方式不止一种,你可以按照需求来进行数据处理。
我们把每一列改一个名字
movie.columns=['演员','上映地区','上映时间','评分','电影名','类型','豆瓣地址']
最后输出为我们想要的格式
movie.to_excel('豆瓣电影喜剧榜前五十.xlsx')
然后再anaconda的文件夹就可以找到我们的这个表格文件: