基于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 相关文章推荐
Django入门使用示例
Dec 12 Python
python实现决策树
Dec 21 Python
Python操作mysql数据库实现增删查改功能的方法
Jan 15 Python
python list多级排序知识点总结
Oct 23 Python
python selenium循环登陆网站的实现
Nov 04 Python
python @propert装饰器使用方法原理解析
Dec 25 Python
Tensorflow 实现分批量读取数据
Jan 04 Python
TensorFlow梯度求解tf.gradients实例
Feb 04 Python
tensorflow生成多个tfrecord文件实例
Feb 17 Python
pandas DataFrame运算的实现
Jun 14 Python
使用Python文件读写,自定义分隔符(custom delimiter)
Jul 05 Python
python 读取、写入txt文件的示例
Sep 27 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
一个显示天气预报的程序
2006/10/09 PHP
php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
2009/09/05 PHP
php strcmp使用说明
2010/04/22 PHP
PHP与SQL注入攻击防范小技巧
2011/09/16 PHP
php输出1000以内质数(素数)示例
2014/02/16 PHP
PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
2014/05/10 PHP
php中动态调用函数的方法
2015/03/16 PHP
php文件缓存方法总结
2016/03/16 PHP
详解PHP实现定时任务的五种方法
2016/07/25 PHP
php插入含有特殊符号数据的处理方法
2016/11/24 PHP
实例讲解PHP中使用命名空间
2019/01/27 PHP
JQuery实现的在新窗口打开链接的方法小结
2010/04/22 Javascript
ExtJs纵坐标值重复问题的解决方法
2014/02/27 Javascript
jquery获取tagName再进行判断
2014/05/29 Javascript
jquery 实现输入邮箱时自动补全下拉提示功能
2015/10/04 Javascript
JavaScript数据绑定实现一个简单的 MVVM 库
2016/04/08 Javascript
详解Backbone.js框架中的模型Model与其集合collection
2016/05/05 Javascript
移动端横屏的JS代码(beta)
2016/05/16 Javascript
jstree创建无限分级树的方法【基于ajax动态创建子节点】
2016/10/25 Javascript
PHP获取当前页面完整URL的方法
2016/12/02 Javascript
JSON创建键值对(key是中文或者数字)方式详解
2017/08/24 Javascript
jQuery实现table表格信息的展开和缩小功能示例
2018/07/21 jQuery
vue.js购物车添加商品组件的方法
2019/09/17 Javascript
js canvas实现俄罗斯方块
2020/10/11 Javascript
微信小程序组件生命周期的踩坑记录
2021/03/03 Javascript
对Python新手编程过程中如何规避一些常见问题的建议
2015/04/01 Python
python计算两个矩形框重合百分比的实例
2018/11/07 Python
Django 自动生成api接口文档教程
2019/11/19 Python
基于Pycharm加载多个项目过程图解
2020/01/19 Python
keras模型可视化,层可视化及kernel可视化实例
2020/01/24 Python
Python中socket网络通信是干嘛的
2020/05/27 Python
python爬虫如何解决图片验证码
2021/02/14 Python
CSS3 实现发光边框特效
2020/11/11 HTML / CSS
面向对象编程的优势是什么
2015/12/17 面试题
WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?
2015/08/25 面试题
小学一年级语文教学反思
2016/03/03 职场文书