Python爬豆瓣影片数据(涉及json和python相互转换)

确定要爬取的数据:电影名称、上映时间、上映地区、影片评分、影片类型 

Python爬豆瓣影片数据(涉及json和python相互转换)_第1张图片

鼠标右键点击检查,点击network下方的XHR,按f5刷新(这里可以看到请求地址、请求方式),左边name列,limit=20排行榜前20部电影

Python爬豆瓣影片数据(涉及json和python相互转换)_第2张图片

还可以在Response下看到响应的内容

Python爬豆瓣影片数据(涉及json和python相互转换)_第3张图片 下面是详细步骤

(1)请求json接口的整体数据Python爬豆瓣影片数据(涉及json和python相互转换)_第4张图片

(2)json.loads将已编码的 JSON 字符串解码为 Python 对象  

Python爬豆瓣影片数据(涉及json和python相互转换)_第5张图片

查看抽取的数据类型为字典类型,可通过键来获对应的值。

Python爬豆瓣影片数据(涉及json和python相互转换)_第6张图片

json.dumps 用于将 Python 对象编码成 JSON 字符串。

注意:

在使用json.dumps时,输出的是ASCII字符码,而不是真正的中文。这是因为json.dumps序列化时对中文默认使用的是ASCII编码。想要输出真正的中文需要指定  encoding="utf-8

Python爬豆瓣影片数据(涉及json和python相互转换)_第7张图片

保存数据,在项目里面已经生成douban.josn

Python爬豆瓣影片数据(涉及json和python相互转换)_第8张图片 点开可以看douban.json里面的数据Python爬豆瓣影片数据(涉及json和python相互转换)_第9张图片

最后,整理上述代码如下:

import json
import requests

#1.请求json接口整体数据
response=requests.get("https://movie.douban.com/j/chart/top_list?type=11&interval_id=100%3A90&action=&start=0&limit=20")
#print(response.text)

#2.抽取想要的数据

py_data = json.loads(response.text)     #将已编码的 JSON 字符串解码为 Python 对象
#print(py_data)                         #查看数据类型  字典类型
for i in py_data:  #遍历
    items={"电影名称":i['title'],"上映时间":i['release_date'],"上映地区":i['regions'],"影片评分":i['score'],"影片类型":i['types']}
    #print(items)
    content=json.dumps(items,ensure_ascii=False)+",\n"
    #print(content)
    #3.保存数据
    with open("douban.json","a",encoding="utf-8")as f:  #设置编码方式,防止乱码
        f.write(content)

                             

 

 

 

你可能感兴趣的:(Python,爬虫)