基于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之再深点,更懂list
Sep 20 Python
python读写json文件的简单实现
Apr 11 Python
Python 将RGB图像转换为Pytho灰度图像的实例
Nov 14 Python
python matplotlib绘图,修改坐标轴刻度为文字的实例
May 25 Python
Python列表与元组的异同详解
Jul 02 Python
详解Python二维数组与三维数组切片的方法
Jul 18 Python
使用python去除图片白色像素的实例
Dec 12 Python
Python使用循环神经网络解决文本分类问题的方法详解
Jan 16 Python
pycharm解决关闭flask后依旧可以访问服务的问题
Apr 03 Python
Django中Aggregation聚合的基本使用方法
Jul 09 Python
Python解析微信dat文件的方法
Nov 30 Python
python3美化表格数据输出结果的实现代码
Apr 14 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
法国:浪漫之都的咖啡文化
2021/03/03 咖啡文化
十天学会php之第四天
2006/10/09 PHP
PHP6 先修班 JSON实例代码
2008/08/23 PHP
php 字符串函数收集
2010/03/29 PHP
PHP和Mysqlweb应用开发核心技术-第1部分 Php基础-2 php语言介绍
2011/07/03 PHP
解析php类的注册与自动加载
2013/07/05 PHP
php使用yield对性能提升的测试实例分析
2019/09/19 PHP
TopList标签和JavaScript结合两例
2007/08/12 Javascript
海量经典的jQuery插件集合
2010/01/12 Javascript
动态的改变IFrame的高度实现IFrame自动伸展适应高度
2012/12/28 Javascript
js 控制下拉菜单刷新的方法
2013/03/03 Javascript
javascript中attribute和property的区别详解
2014/06/05 Javascript
JS实现把鼠标放到链接上出现滚动文字的方法
2016/04/06 Javascript
laypage分页控件使用实例详解
2016/05/19 Javascript
浅析JavaScript中作用域和作用域链
2016/12/06 Javascript
利用JS实现页面删除并重新排序功能
2016/12/09 Javascript
WEEX环境搭建与入门详解
2019/10/16 Javascript
jquery ajax 请求小技巧实例分析
2019/11/11 jQuery
vue项目配置使用flow类型检查的步骤
2020/03/18 Javascript
python实现多线程采集的2个代码例子
2014/07/07 Python
基于python时间处理方法(详解)
2017/08/14 Python
python面向对象法实现图书管理系统
2019/04/19 Python
Python实现 PS 图像调整中的亮度调整
2019/06/28 Python
利用python为PostgreSQL的表自动添加分区
2021/01/18 Python
巴西独家产品和现场演示购物网站:Shoptime
2019/07/11 全球购物
颇特女士:NET-A-PORTER(直邮中国)
2020/07/11 全球购物
在什么时候需要使用"常引用"
2015/12/31 面试题
文员自我评价怎么写
2013/09/19 职场文书
办公室文秘自我评价
2013/09/21 职场文书
本科生的职业生涯规划范文
2014/01/09 职场文书
讲文明树新风演讲稿
2014/05/12 职场文书
社区党员干部承诺书
2015/05/04 职场文书
给校长的建议书作文500字
2015/09/14 职场文书
Python+Appium实现自动抢微信红包
2021/05/21 Python
python b站视频下载的五种版本
2021/05/27 Python
Django路由层如何获取正确的url
2021/07/15 Python