
豆瓣电影信息爬取(json)
# a = "hello world" # 字符串数据类型
# b = {"name":"python"} # 字典
# c = '{"name":"python"}' # json数据类型字符串
方法:
分析网页subject 应该是下面类型
a = {'name':[{'id':1,'name':'python'},{'id':2,'name':'python1'},{}......]}
b = json.loads(a)
for i in b['name']:
print(i['name'])
网页分析
Network:
XHR:(XML Http Request)XHR对象提供了对 HTTP 协议的完全的访问,包括做出 POST 和 HEAD 请求以及普通的 GET 请求的能力。
Js:动态脚本语言,广泛应用于web应用的功能开发以及丰富页面体验,可以动态控制页面内容;如修改页面文字、图片、各种效果、功能等;
CSS:层叠样式表,通过设置对应的样式属性可以修改html文档内各元素的显示、位置等样式;如修改颜色、字体、字号、宽高、位置、背景等。
Headers:头信息
URL: https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start=0
Request Method: GET 请求方法,除GET外还有 HEAD、POST、PUT等。
Status Code: 200 OK HTTP状态码,
例如:
HTTP: Status 200 – 服务器成功返回网页
HTTP: Status 404 – 请求的网页不存在
HTTP: Status 503 – 服务不可用
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3510.2 Safari/537.36
Preview: 预览
Respouse:响应
找到左侧包含subject的name, 分析subject 正是我们想要的信息。
爬取方法:
1.找到URL
2.解析url,得到我们的网页源代码
3.提取数据
4.保存数据
代码
import json
import requests
def douban():
# 1.找到URL
start_url = 'https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start=0'
# 2.解析URL,得到我们的网页源代码
# 模拟浏览器,让服务器不会认为我们是电脑来提取的。
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3510.2 Safari/537.36}'}
for i in range(10):
url = start_url.format(i*20)
r = requests.get(url,headers = headers) # 用reques这个模块,来获取URL的信息
# print(r) # 输出 <Respouse [200]>
ret = r.content.decode() # 当前网页的源代码,json数据类型字符串
# print(ret)
# 3.提取数据
result = json.loads(ret) # 能够版json数据字符串变成字典,result就是真正的字典
# print(result)
# print(type(result))
for i in result['subjects']:
# print(i['title'])
# print(i['rate'])
# print(i['url'])
name = i['title']
rate = i['rate']
url = i['url']
# 保存数据
with open('./douban.csv', 'a') as f:
f.write('{},{},{}\n'.format(name,rate,url))
douban()