【爬虫入门练习日记2】爬取豆瓣电影分类排行榜的详细数据

爬取要求:豆瓣电影分类排行榜的详情页数据,

https://movie.douban.com/

一、网页分析

在豆瓣电影当中选择排行榜,以喜剧类为例,由于电影数量过多,本网页是通过滚动不断刷新网页数据,但是在刷新的同时,地址栏不会发生任何变化。

二、前期准备

1.AJAX请求:

指一种创建交互式网页应用的网页开发技术,浏览器可以通过JS异步发出请求,局部更新页面技术。

AJAX请求的局部更新,浏览器地址栏不会发生变化,局部更新不会舍弃原来的页面内容。

2.URL:表示请求地址

3.type:表示请求方法类型GET或POST请求

4.数据类型:

text表示文本

xml表示xml数据

json表示json对象(直接将字符串转换成json对象)

5.如何定位AJAX请求?

网页右键-检查-networking-XHR

ALL代表当前页面所有请求所对应的数据包,而XHR所对应的是AJAX请求所对应的数据包

6.如何确定通过浏览器确定的是我们想要的响应数据呢?

同样还是可以借助network查询,点击响应,查看一下是否是自己想要获取的内容

三、相关参数准备

1.URL

两种获取方法:一种是直接复制地址栏中的网址,另一种是在网页右键-检查-查看network,也是可以获取URL

本次任务是爬取豆瓣电影某一分类排行榜的数据,那么查看到URL为

https://movie.douban.com/j/chart/top_list_count?type=24&interval_id=100%3A90&action=

2.携带参数

查看响应数据是否携带参数的方法:可以通过网页右键-检查-network-负载

通过查看发现所携带的参数主要有:

param = {"type": "24", "interval_id" : "100:90", "action": "", "start": "0", "limit": "20"}

通过查看,可以得知这里的start是指从库中的第几部电影开始获取,而limit是指一次获取个数。

将参数封装到字典当中,方便使用。

3.UA伪装

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'}
# 此处省略了部分身份载体标识,切记一定要复制完整的身份载体标识才可以运行

4.发出请求

如何确定发出请求方法?由图可以得知,应该使用Get()方法发出请求

get()方法所包含的参数主要有:

import requests
response = requests.get(url=url,params=params,headers=headers)

5.获取响应数据类型

在network里面找到content-type,查看响应类型,这返回的是一个json对象,但是json格式是不可以用utf-8编码格式的。要有所区别

这里应该使用一个json函数。也可以使用response的一个text属性,结果便是字符串形式的json

# 第一种方式:
import json
list_data = response.json()

# 第二种方法:
list_data = response.text

四、完整代码

import requests
import json
url = "https://movie.douban.com/j/chart/top_list"
headers ={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) Ap"}  # 此处的身份载体标识不完整
param = {"type": "1", "interval_id" : "100:90", "action": "", "start": "0", "limit": "20"}
response = requests.get(url=url, params=param, headers=headers)
list_data = response.json()
fp = open('./douban.josn', 'w', encoding="utf=8")
json.dump(list_data, fp=fp,ensure_ascii=False)
print("over")

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值