基于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基于DES算法加密解密实例
Jun 03 Python
Python中模块与包有相同名字的处理方法
May 05 Python
Python使用getpass库读取密码的示例
Oct 10 Python
Python实现的生成格雷码功能示例
Jan 24 Python
python使用mysql的两种使用方式
Mar 07 Python
python实现比较文件内容异同
Jun 22 Python
对python 命令的-u参数详解
Dec 03 Python
python3利用Socket实现通信的方法示例
May 06 Python
pyqt5中QThread在使用时出现重复emit的实例
Jun 21 Python
Python解决pip install时出现的Could not fetch URL问题
Aug 01 Python
python 爬虫爬取京东ps4售卖情况
Dec 18 Python
浅谈matplotlib默认字体设置探索
Feb 03 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实现框架(一)
2006/10/09 PHP
Google Voice 短信发送接口PHP开源版(2010.5更新)
2010/07/22 PHP
php处理json时中文问题的解决方法
2011/04/12 PHP
PHP中操作ini配置文件的方法
2013/04/25 PHP
php利用反射实现插件机制的方法
2015/03/14 PHP
php构造方法中析构方法在继承中的表现
2016/04/12 PHP
js 自定义个性下拉选择框示例
2013/08/20 Javascript
浅析JavaScript中的typeof运算符
2013/11/30 Javascript
jQuery实现标题有打字效果的焦点图代码
2015/11/16 Javascript
js判断鼠标位置是否在某个div中的方法
2016/02/26 Javascript
微信扫码支付零云插件版实例详解
2017/04/26 Javascript
Bootstrap 表单验证formValidation 实现远程验证功能
2017/05/17 Javascript
Vue三层嵌套路由的示例代码
2018/05/05 Javascript
微信小程序自定义tab实现多层tab嵌套功能
2018/06/15 Javascript
react koa rematch 如何打造一套服务端渲染架子
2019/06/26 Javascript
微信小程序封装分享与分销功能过程解析
2019/08/13 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
2019/09/19 Javascript
[03:02]辉夜杯主赛事第二日 每日之星
2015/12/27 DOTA
深入解析Python中的list列表及其切片和迭代操作
2016/03/13 Python
python logging日志模块的详解
2017/10/29 Python
EM算法的python实现的方法步骤
2018/01/02 Python
python微信跳一跳系列之色块轮廓定位棋盘
2018/02/26 Python
Python操作mongodb数据库进行模糊查询操作示例
2018/06/09 Python
python加载自定义词典实例
2019/12/06 Python
python中xlutils库用法浅析
2020/12/29 Python
详解Python中openpyxl模块基本用法
2021/02/23 Python
加拿大女包品牌:Matt & Nat
2017/05/12 全球购物
Invicta手表官方商店:百年制表历史的瑞士腕表品牌
2019/09/26 全球购物
大学本科毕业生求职简历的自我评价
2013/10/09 职场文书
自荐书格式
2013/12/01 职场文书
实习鉴定评语
2014/01/19 职场文书
周年庆典邀请函范文
2014/01/24 职场文书
项目负责人任命书
2014/06/04 职场文书
端午节寄语2015
2015/03/23 职场文书
解决Django transaction进行事务管理踩过的坑
2021/04/24 Python
在MySQL中你成功的避开了所有索引
2022/04/20 MySQL