python爬虫 基于requests模块发起ajax的get请求实现解析


Posted in Python onAugust 20, 2019

基于requests模块发起ajax的get请求

需求:爬取豆瓣电影分类排行榜 https://movie.douban.com/中的电影详情数据

用抓包工具捉取 使用ajax加载页面的请求

python爬虫 基于requests模块发起ajax的get请求实现解析

python爬虫 基于requests模块发起ajax的get请求实现解析

鼠标往下下滚轮拖动页面,会加载更多的电影信息,这个局部刷新是当前页面发起的ajax请求,

用抓包工具捉取页面刷新的ajax的get请求,捉取滚轮在最底部时候发起的请求

这个get请求是本次发起的请求的url

python爬虫 基于requests模块发起ajax的get请求实现解析

ajax的get请求携带参数

python爬虫 基于requests模块发起ajax的get请求实现解析

获取响应内容不再是页面数据,是json字符串,是通过异步请求获取的电影详情信息

start和limit参数 需要注意,改变这两个参数获取的电影详情不一样

import requests
import json
# 指定ajax-get请求的url(通过抓包进行获取)
url = 'https://movie.douban.com/j/chart/top_list?'
# 封装ajax的get请求携带的参数(从抓包工具中获取) 封装到字典
param = {
  'type': '13',
  'interval_id': '100:90',
  'action': '',
  'start': '20', # 从第20个电影开始获取详情
  'limit': '20', # 获取多少个电影详情
  # 改变这两个参数获取的电影详情不一样
}
# 定制请求头信息,相关的头信息必须封装在字典结构中
headers = {
  'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36',
}
# 发起ajax的get请求还是用get方法
response = requests.get(url=url,params=param,headers=headers)

# 获取响应内容:响应内容为json字符串
data = response.text
data = json.loads(data)
for data_dict in data:
  print(data_dict["rank"],data_dict["title"])

'''
芙蓉镇
沉静如海
淘金记
马戏团
情迷意乱
士兵之歌
战争与和平
怦然心动
大话西游之月光宝盒
罗马假日
音乐之声
一一
雨中曲
我爱你
莫娣
卡比利亚之夜
婚姻生活
本杰明·巴顿奇事
情书
春光乍泄
'''

从21个电影开始获取信息,总共获取20个电影详情信息

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python两个整数相除得到浮点数值的方法
Mar 18 Python
用Python编写一个基于终端的实现翻译的脚本
Apr 24 Python
Python2.x版本中基本的中文编码问题解决
Oct 12 Python
Python中使用Queue和Condition进行线程同步的方法
Jan 19 Python
python 把数据 json格式输出的实例代码
Oct 31 Python
Python使用matplotlib绘制多个图形单独显示的方法示例
Mar 14 Python
对python3 urllib包与http包的使用详解
May 10 Python
Django结合ajax进行页面实时更新的例子
Aug 12 Python
使用Python刷淘宝喵币(低阶入门版)
Oct 30 Python
解决pycharm最左侧Tool Buttons显示不全的问题
Dec 17 Python
jupyter notebook 增加kernel教程
Apr 10 Python
Python创建简单的神经网络实例讲解
Jan 04 Python
pytorch 在sequential中使用view来reshape的例子
Aug 20 #Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
Aug 20 #Python
python实现证件照换底功能
Aug 20 #Python
pytorch多进程加速及代码优化方法
Aug 19 #Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
Aug 19 #Python
python opencv实现证件照换底功能
Aug 19 #Python
解决pytorch GPU 计算过程中出现内存耗尽的问题
Aug 19 #Python
You might like
PHP 作用域解析运算符(::)
2010/07/27 PHP
PDO版本问题 Invalid parameter number: no parameters were bound
2013/01/06 PHP
php更新mysql后获取影响的行数发生异常解决方法
2013/03/28 PHP
win10环境PHP 7 安装配置【教程】
2016/05/09 PHP
PHP类型约束用法示例
2016/09/28 PHP
Yii框架引用插件和ckeditor中body与P标签去除的方法
2017/01/19 PHP
php使用redis的几种常见操作方式和用法示例
2020/02/20 PHP
Jquery通过Ajax访问XML数据的小例子
2013/11/18 Javascript
Javascript中的回调函数和匿名函数的回调示例介绍
2014/05/12 Javascript
Html5+jQuery+CSS制作相册小记录
2016/12/30 Javascript
Bootstrap 3浏览器兼容性问题及解决方案
2017/04/11 Javascript
详解EasyUi控件中的Datagrid
2017/08/23 Javascript
vue实现个人信息查看和密码修改功能
2018/05/06 Javascript
Vue.js点击切换按钮改变内容的实例讲解
2018/08/22 Javascript
Vue 无限滚动加载指令实现方法
2019/05/28 Javascript
VUE 实现动态给对象增加属性,并触发视图更新操作示例
2019/11/29 Javascript
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
2020/04/24 Javascript
[58:46]OG vs NAVI 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python利用Beautiful Soup模块创建对象详解
2017/03/27 Python
Python 中 list 的各项操作技巧
2017/04/13 Python
python游戏地图最短路径求解
2019/01/16 Python
pycharm+PyQt5+python最新开发环境配置(踩坑)
2019/02/11 Python
Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解
2019/02/28 Python
Django框架文件上传与自定义图片上传路径、上传文件名操作分析
2019/05/10 Python
python中eval与int的区别浅析
2019/08/11 Python
基于Django OneToOneField和ForeignKey的区别详解
2020/03/30 Python
pip install 使用国内镜像的方法示例
2020/04/03 Python
Pycharm新手使用教程(图文详解)
2020/09/17 Python
使用before和:after伪类制作css3圆形按钮
2014/04/08 HTML / CSS
Under Armour安德玛德国官网:美国高端运动科技品牌
2019/03/09 全球购物
高中毕业自我鉴定
2013/12/22 职场文书
幼儿园教师的考核评语
2014/04/18 职场文书
群众路线班子对照检查材料
2014/09/25 职场文书
民用住房租房协议书
2014/10/29 职场文书
公司股份转让协议书范本
2015/01/28 职场文书
flex布局中使用flex-wrap实现换行的项目实践
2022/06/21 HTML / CSS