利用API获取豆瓣即将上映的20条电影信息

利用爬虫爬取网页数据主要有两种方式:
第一种是直接爬取HTML网页内容,它的好处是可以自定义爬取的内容,弊端是很多时候这种行为是被网站禁止的,并且需要根据网站的结构来编写代码。
第二种是利用网站的API进行爬取,这是网站向用户开放的接口,好处是有网站的允许,不用怕IP被封等情况,属于正规的数据获取途径,且操作不难;同样的,弊端是只能获取限定内容。

运行环境:Jupyter Notebook(默认已安装了anaconda包)
运行过程:

1、打开Jupyter Notebook
在放Python代码的位置打开命令窗口,运行以下代码,在浏览器中会自动打开Jupyter Notebook

jupyter notebook

在jupyter notebook中点击右上角的new,新建Python3文件,开始编写代码
2、爬取豆瓣“即将上映”部分的电影
在豆瓣API官方文档中找到即将上映部分

API文档——即将上映.png

可以看到目标URL是豆瓣网址https://api.douban.com/ + resources URL

import urllib.request as request #导入urllib包,利用request模块抓取URL内容
url = 'https://api.douban.com/v2/movie/coming_soon'
crawl_content = request.urlopen(url).read()  #发送get请求到网页,并返回读取到的内容
print(crawl_content)

输出结果如下:可以看到已经抓取到了一些内容,但由于编码和格式的问题可读性很低


获取到的URL内容.png

因此,对代码进行改进,让内容显示成json格式,并修改编码

import urllib.request as request
import json
url = 'https://api.douban.com/v2/movie/coming_soon'
crawl_content = request.urlopen(url).read()
print(json.loads(crawl_content.decode('utf8')))

输出结果如下:修改后可以大概看出它的主要内容,但是由于信息较多,所以需要对代码进一步修改,从以下内容中提取出我们需要的信息


改变编码后的内容.png

在这里就只提取三类信息:标题(title)、类型(genres)、年份(year)

import urllib.request as request
import json
url = 'https://api.douban.com/v2/movie/coming_soon'
crawl_content = request.urlopen(url).read()
movies = json.loads(crawl_content.decode('utf8'))['subjects']
for movie in movies:
    print(movie['title'],movie['genres'],movie['year'])

输出的jupyter界面如图所示:

jupyter界面.png

PS:可以看到,这里只有20条数据,仔细看豆瓣的文档,发现它是有数量限制的。
属性.png

参考资料:
豆瓣API官方文档
Python爬虫之一:基于API的爬虫
【大数据】使用API进行爬虫

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容