美文网首页
利用API获取豆瓣即将上映的20条电影信息

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

作者: zzzzzz_ | 来源:发表于2018-06-01 20:17 被阅读0次

    利用爬虫爬取网页数据主要有两种方式:
    第一种是直接爬取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进行爬虫

    相关文章

      网友评论

          本文标题:利用API获取豆瓣即将上映的20条电影信息

          本文链接:https://www.haomeiwen.com/subject/rcinjftx.html