基于Python的Post请求数据爬取的方法详解


Posted in Python onJune 14, 2019

为什么做这个

和同学聊天,他想爬取一个网站的post请求

观察

该网站的post请求参数有两种类型:(1)参数体放在了query中,即url拼接参数(2)body中要加入一个空的json对象,关于为什么要加入空的json对象,猜测原因为反爬虫。既有query参数又有空对象体的body参数是一件脑洞很大的事情。
一开始先在 apizza网站 上了做了相关实验才发现上面这个规律的,并发现该网站的请求参数要为raw形式,要是直接写代码找规律不是一件容易的事情。

源码

import requests
import json
headers = {
    'Accept':'application/json, text/javascript, */*; q=0.01',
    'X-Requested-With':'XMLHttpRequest',
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36',
    'Content-Type':'application/json',
    'Accept-Encoding':'gzip, deflate',
    'Accept-Language':'zh-CN,zh;q=0.8',
    'Cache-Control':'no-cache',
  }
#空的对象,body参数
data = {}
data = json.dumps(data)
page = 0
url = '网站地址,后面为参数?param1=1¶m1='+str(page)
response = requests.post(url = url,data=data ,headers =headers )
print(response.url)
print(response.text)

总结

  • 现在相关工具中发现现象
  • 请求方式确定:post还是get或者其它
  • 参数类型:form-data还是raw或者其它
  • 参数位置:若是post请求,在query中还是body中,还是二者皆有

ps:python requests 发起http POST 请求

python requests 发起http POST 请求,带参数,带请求头:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import json
url = 'http://official-account/app/messages/group'
body = {"type": "text", "content": "测试文本", "tag_id": "20717"}
headers = {'content-type': "application/json", 'Authorization': 'APP appid = 4abf1a,token = 9480295ab2e2eddb8'}
#print type(body)
#print type(json.dumps(body))
# 这里有个细节,如果body需要json形式的话,需要做处理
# 可以是data = json.dumps(body)
response = requests.post(url, data = json.dumps(body), headers = headers)
# 也可以直接将data字段换成json字段,2.4.3版本之后支持
# response = requests.post(url, json = body, headers = headers)
# 返回信息
print response.text
# 返回响应头
print response.status_code

总结

以上所述是小编给大家介绍的基于Python的Post请求数据爬取的方法详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
探寻python多线程ctrl+c退出问题解决方案
Oct 23 Python
详解Python中DOM方法的动态性
Apr 11 Python
Python中支持向量机SVM的使用方法详解
Dec 26 Python
python对excel文档去重及求和的实例
Apr 18 Python
对命令行模式与python交互模式介绍
May 12 Python
详解Python中的type和object
Aug 15 Python
用python打印菱形的实操方法和代码
Jun 25 Python
详解Python对JSON中的特殊类型进行Encoder
Jul 15 Python
详解Python 字符串相似性的几种度量方法
Aug 29 Python
Python 判断时间是否在时间区间内的实例
May 16 Python
python文件操作seek()偏移量,读取指正到指定位置操作
Jul 05 Python
Python实现仓库管理系统
May 30 Python
Appium+python自动化怎么查看程序所占端口号和IP
Jun 14 #Python
Python中py文件转换成exe可执行文件的方法
Jun 14 #Python
10 行Python 代码实现 AI 目标检测技术【推荐】
Jun 14 #Python
Python3 Tkinter选择路径功能的实现方法
Jun 14 #Python
Python Tkinter 简单登录界面的实现
Jun 14 #Python
python tkinter实现界面切换的示例代码
Jun 14 #Python
对Python中TKinter模块中的Label组件实例详解
Jun 14 #Python
You might like
2020年4月放送!《Princess Connect Re:Dive》制作组 & 角色声优公开!
2020/03/06 日漫
PHP 5.5 创建和验证哈希最简单的方法详解
2013/11/07 PHP
php+xml结合Ajax实现点赞功能完整实例
2015/01/30 PHP
PHP实现的简单留言板功能示例【基于thinkPHP框架】
2018/12/07 PHP
PHP中SESSION过期设置
2021/03/09 PHP
深入理解JavaScript中的传值与传引用
2013/12/09 Javascript
Js与下拉列表处理问题解决
2014/02/13 Javascript
兼容所有浏览器的js复制插件Zero使用介绍
2014/03/19 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
Bootstrap多级导航栏(级联导航)的实现代码
2016/03/08 Javascript
Bootstrap编写导航栏和登陆框
2016/05/30 Javascript
JS对象创建的几种方式整理
2017/02/28 Javascript
javascript实现日期三级联动下拉框选择菜单
2020/12/03 Javascript
Vue2.0 v-for filter列表过滤功能的实现
2018/09/07 Javascript
python处理文本文件实现生成指定格式文件的方法
2014/07/31 Python
Python实现的下载网页源码功能示例
2017/06/13 Python
python3读取csv和xlsx文件的实例
2018/06/22 Python
从运行效率与开发效率比较Python和C++
2018/12/14 Python
基于python历史天气采集的分析
2019/02/14 Python
pandas factorize实现将字符串特征转化为数字特征
2019/12/19 Python
Tensorflow获取张量Tensor的具体维数实例
2020/01/19 Python
Keras—embedding嵌入层的用法详解
2020/06/10 Python
python在linux环境下安装skimage的示例代码
2020/10/14 Python
用python实现一个简单计算器(完整DEMO)
2020/10/14 Python
css3实例教程 一款纯css3实现的发光屏幕旋转特效
2014/12/07 HTML / CSS
涂鸦板简单实现 Html5编写属于自己的画画板
2016/07/05 HTML / CSS
函授生自我鉴定
2014/03/25 职场文书
本科毕业生求职自荐信
2014/04/09 职场文书
小学生手册家长评语
2014/04/16 职场文书
仓库管理计划书
2014/05/04 职场文书
竞争上岗演讲稿范文
2014/05/12 职场文书
十八大观后感
2015/06/12 职场文书
2016年党员干部廉政承诺书
2016/03/24 职场文书
Python实现单例模式的5种方法
2021/06/15 Python
详解MySql中InnoDB存储引擎中的各种锁
2022/02/12 MySQL
HTML5基础学习之文本标签控制
2022/03/25 HTML / CSS