基于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将xml xsl文件生成html文件存储示例讲解
Dec 03 Python
python回调函数的使用方法
Jan 23 Python
python 线程的暂停, 恢复, 退出详解及实例
Dec 06 Python
浅谈python正则的常用方法 覆盖范围70%以上
Mar 14 Python
Python使用xlwt模块操作Excel的方法详解
Mar 27 Python
Python3实现腾讯云OCR识别
Nov 27 Python
Python实现统计英文文章词频的方法分析
Jan 28 Python
python实现简单日期工具类
Apr 24 Python
python 字典操作提取key,value的方法
Jun 26 Python
Python paramiko模块使用解析(实现ssh)
Aug 30 Python
Python numpy.zero() 初始化矩阵实例
Nov 27 Python
Python2手动安装更新pip过程实例解析
Jul 16 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操作MySQL事务实例
2014/11/05 PHP
PHP调用MySQL存储过程并返回值的方法
2014/12/26 PHP
PHP基于单例模式实现的mysql类
2016/01/09 PHP
PHP从二维数组得到N层分类树的实现代码
2016/10/11 PHP
JS event使用方法详解
2008/04/28 Javascript
Javascript核心读书有感之词法结构
2015/02/01 Javascript
JavaScript中常见的字符串操作函数及用法汇总
2015/05/04 Javascript
jQuery实现文本框输入同步的方法
2015/06/20 Javascript
简单实现轮播图效果的实例
2016/07/15 Javascript
jQuery 更改checkbox的状态,无效的解决方法
2016/07/22 Javascript
Bootstrap栅格系统学习笔记
2016/11/25 Javascript
knockoutjs模板实现树形结构列表
2017/07/31 Javascript
深入浅析Vue.js中 computed和methods不同机制
2018/03/22 Javascript
JS实现的RC4加密算法示例
2018/08/16 Javascript
创建echart多个联动的示例代码
2018/11/23 Javascript
JS实现图片拖拽交换效果
2018/11/30 Javascript
JS闭包原理与应用经典示例
2018/12/20 Javascript
微信小程序8种数据通信的方式小结
2020/02/03 Javascript
js实现树形数据转成扁平数据的方法示例
2020/02/27 Javascript
小程序点餐界面添加购物车左右摆动动画
2020/09/23 Javascript
[54:10]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
Python格式化压缩后的JS文件的方法
2015/03/05 Python
使用Python的Twisted框架编写非阻塞程序的代码示例
2016/05/25 Python
Python获取当前页面内所有链接的四种方法对比分析
2017/08/19 Python
Python使用MyQR制作专属动态彩色二维码功能
2019/06/04 Python
python标记语句块使用方法总结
2019/08/05 Python
Django项目后台不挂断运行的方法
2019/08/31 Python
python使用matplotlib绘制雷达图
2019/10/18 Python
如何表示python中的相对路径
2020/07/08 Python
全网最详细的PyCharm+Anaconda的安装过程图解
2021/01/25 Python
html5使用canvas绘制太阳系效果
2014/12/15 HTML / CSS
创造美妙香氛体验:Aera扩散器和香水
2018/11/25 全球购物
新员工培训个人的自我评价
2013/10/09 职场文书
装潢设计专业推荐信模板
2013/11/26 职场文书
暑期培训班招生方案
2014/08/26 职场文书
Redis超详细讲解高可用主从复制基础与哨兵模式方案
2022/04/07 Redis