基于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 如何快速找出两个电子表中数据的差异
May 26 Python
使用Python对微信好友进行数据分析
Jun 27 Python
django如何连接已存在数据的数据库
Aug 14 Python
Python实现合并两个有序链表的方法示例
Jan 31 Python
django框架model orM使用字典作为参数,保存数据的方法分析
Jun 24 Python
解决python 上传图片限制格式问题
Oct 30 Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
Apr 26 Python
Python进行特征提取的示例代码
Oct 15 Python
通过代码简单了解django model序列化作用
Nov 12 Python
Python爬虫之App爬虫视频下载的实现
Dec 08 Python
Pycharm plot独立窗口显示的操作
Dec 11 Python
学会用Python实现滑雪小游戏,再也不用去北海道啦
May 20 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 GD绘制24小时柱状图
2008/06/28 PHP
php中使用$_REQUEST需要注意的一个问题
2013/05/02 PHP
PHP截断标题且兼容utf8和gb2312编码
2013/09/22 PHP
php实现图形显示Ip地址的代码及注释
2014/01/20 PHP
php 创建以UNIX时间戳命名的文件夹(示例代码)
2014/03/08 PHP
PHP对象实例化单例方法
2017/01/19 PHP
jQuery为iframe的body添加click事件的实现代码
2011/04/07 Javascript
定义JavaScript二维数组采用定义数组的数组来实现
2012/12/09 Javascript
使用js操作cookie的一点小收获分享
2013/09/03 Javascript
原生javascript图片自动或手动切换示例附演示源码
2013/09/04 Javascript
如何实现修改密码时密码框显示保存到cookie的密码
2013/12/10 Javascript
两个select多选模式的选项相互移动(示例代码)
2014/01/11 Javascript
file控件选择上传文件确定后触发的js事件是哪个
2014/03/17 Javascript
jQuery遍历Table应用示例
2014/04/09 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
2014/05/29 Javascript
Bootstrap与KnockoutJs相结合实现分页效果实例详解
2016/05/03 Javascript
使用JS正则表达式 替换括号,尖括号等
2016/11/29 Javascript
JavaScript实现经典排序算法之插入排序
2016/12/28 Javascript
jQuery实现复制到粘贴板功能
2017/02/11 Javascript
VSCode配置react开发环境的步骤
2017/12/27 Javascript
Vue 实现简易多行滚动"弹幕"效果
2020/01/02 Javascript
js 压缩图片的示例(只缩小体积,不更改图片尺寸)
2020/10/21 Javascript
Python3利用SMTP协议发送E-mail电子邮件的方法
2017/09/30 Python
Python脚本利用adb进行手机控制的方法
2019/07/08 Python
Selenium自动化测试工具使用方法汇总
2020/06/12 Python
美国最灵活的移动提供商:Tello
2017/07/18 全球购物
澳大利亚小众服装品牌:Maurie & Eve
2018/03/27 全球购物
MIXIT官网:俄罗斯最大的化妆品公司之一
2020/01/25 全球购物
投资合作协议书
2014/04/17 职场文书
新农村建设标语
2014/06/24 职场文书
优秀共产党员事迹材料
2014/12/18 职场文书
教导主任个人总结
2015/03/03 职场文书
2015年班组工作总结
2015/04/20 职场文书
2016校本研修培训心得体会
2016/01/08 职场文书
《窃读记》教学反思
2016/02/18 职场文书
JDBC连接的六步实例代码(与mysql连接)
2021/05/12 MySQL