基于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 字典dict使用介绍
Nov 30 Python
python根据出生日期返回年龄的方法
Mar 26 Python
分享几道你可能遇到的python面试题
Jul 24 Python
Python使用matplotlib简单绘图示例
Feb 01 Python
python素数筛选法浅析
Mar 19 Python
python实现requests发送/上传多个文件的示例
Jun 04 Python
python添加模块搜索路径和包的导入方法
Jan 19 Python
基于python的Paxos算法实现
Jul 03 Python
Python中list的交、并、差集获取方法示例
Aug 01 Python
python超时重新请求解决方案
Oct 21 Python
python数据预处理 :数据共线性处理详解
Feb 24 Python
python中使用paramiko模块并实现远程连接服务器执行上传下载功能
Feb 29 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
PHP中PDO基础教程 入门级
2011/09/04 PHP
PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
2012/10/05 PHP
PHP模糊查询技术实例分析【附源码下载】
2019/03/07 PHP
Javascript 判断 object 的特定类转载
2007/02/01 Javascript
Javascript中正则表达式的全局匹配模式分析
2011/04/26 Javascript
IE6下focus与blur错乱的解决方案
2011/07/31 Javascript
jQuery中fadeIn、fadeOut、fadeTo的使用方法(图片显示与隐藏)
2013/05/08 Javascript
jQuery实现当前页面标签高亮显示的方法
2015/03/10 Javascript
avalon js实现仿微博拖动图片排序
2015/08/14 Javascript
js实现带缓动动画的导航栏效果
2017/01/16 Javascript
js实现单张图片平移切换效果
2017/10/11 Javascript
Nodejs模块载入运行原理
2018/02/23 NodeJs
详解vue的diff算法原理
2018/05/20 Javascript
JS数组求和的常用方法实例小结
2019/01/07 Javascript
微信小程序人脸识别功能代码实例
2019/05/07 Javascript
jstree中的checkbox默认选中和隐藏示例代码
2019/12/29 Javascript
[13:38]2015国际邀请赛中国战队出征仪式
2015/05/29 DOTA
python+requests+unittest API接口测试实例(详解)
2017/06/10 Python
python探索之BaseHTTPServer-实现Web服务器介绍
2017/10/28 Python
Java分治归并排序算法实例详解
2017/12/12 Python
python调用虹软2.0第三版的具体使用
2019/02/22 Python
PyQt5+Pycharm安装和配置图文教程详解
2020/03/24 Python
CSS3教程(6):创建网站多列
2009/04/02 HTML / CSS
HTML5 placeholder(空白提示)属性介绍
2013/08/07 HTML / CSS
Levi’s西班牙官方网站:李维斯,著名的牛仔裤品牌
2020/08/20 全球购物
市场营销专业毕业生自荐信
2013/11/02 职场文书
国贸专业的职业规划范文
2014/01/23 职场文书
《称象》教学反思
2014/04/25 职场文书
小学生母亲节演讲稿
2014/05/07 职场文书
微笑面对生活演讲稿
2014/09/23 职场文书
小学生成绩单评语
2014/12/31 职场文书
酒店销售经理岗位职责
2015/04/02 职场文书
2015年小学图书室工作总结
2015/05/18 职场文书
电影焦裕禄观后感
2015/06/09 职场文书
2016教师校本培训心得体会
2016/01/08 职场文书
超外差式晶体管收音机的组装与统调
2021/04/22 无线电