哈喽,大家好,我是小爬虫,上一节我们讲了如何爬取百度翻译实现自己的翻译程序,没有学习过的可以进入专栏读进行学习。今天我们再次使用requests来实现一个案例:下载豆瓣电影喜剧排行榜信息,包含电影名称,上映时间,评分。
豆瓣页面分析
首先我们打开豆瓣电影喜剧排行榜页面,查看我们需要的数据是在页面源代码里面还是在js中请求的。
我们首先进入源代码页面,搜索关键字‘美丽人生’,发现源代码里面并没有电影相关的信息,说明我们需要的数据是经过js请求而来的。
接下来我们进入浏览器调试工具,寻找这些电影信息是通过哪个接口请求而来的,很容易就可以找到我们需要的接口。
我们发现这个接口是一个GET请求,并且请求中还带了一些参数。
进入Payload页面观察这些参数,可以看到有5个参数,其中前面3个不需要关心,最重要的是后面2个,start表示请求从第几个电影开始,limit表示本次请求最多返回多少个电影信息。
我们再进入Preview页面观察返回结果,发现我们需要的电影信息都在里面。
实现豆瓣电影信息的爬取
经过以上分析,我们基本确定了我们的实现思路:
- 请求相关接口
- 解析返回的json数据
- 将解析的结果写入csv文件
接下来给出源代码:
import requests
import csv
url = "https://movie.douban.com/j/chart/top_list"
params = {
"type": 24,
"interval_id": "100:90",
"action": "",
"start": 0,
"limit": 20
}
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36"
}
resp = requests.get(url, headers=headers, params=params)
movie_list = resp.json()
f = open("豆瓣电影喜剧排行榜.csv", mode="w")
writer = csv.writer(f)
for movie in movie_list:
movie_name = movie['title']
movie_time = movie['release_date']
movie_score = movie['score']
writer.writerow([movie_name, movie_time, movie_score])
f.close()
运行之后打开同级目录下‘豆瓣电影喜剧排行榜.csv’这个文件,可以看到电影信息都正确地写入了。
这里只下载了前20条数据,如果你想下载更多,只需要循环去执行,改变参数中的start就行了。同样的道理,我们可以下载豆瓣电影其他排行榜的电影信息,大家可以自己下去实践。
本节的豆瓣电影信息下载就到这里,接下来我们将会继续学习爬虫的新知识,敬请期待。记得关注小爬哦~
本文首发于公众号:小爬虫,欢迎关注
|