向往常一样发送POST请求出现错误

网站信息

表单页面

结果

网页使用 gb2312 编码

使用 requests 发送 post 请求

In [2]: import requests

In [3]: from bs4 import BeautifulSoup as BS

In [4]: url = 'http://example.com/ip/search.asp'

In [5]: data = {

...: 'loudong': '女生九栋',

...: 'fangjian': '101-1'}

In [6]: res = requests.post(url, data=data)

In [9]: res.encoding = 'gb2312'

查询失败

使用 Wireshark 对比浏览器发送的数据和 requests 发送的数据

浏览器发送的 post 数据

requests 发送的 post 数据

可以看到 loudong 的值编码后不一样:

浏览器 使用 gb2312 进行编码

requests 使用 utf-8 进行编码

使用 requests 发送自己编码后的 post 请求

步骤:

为 HTTP Headers 手动加上 Content-Type: application/x-www-form-urlencoded

以字符串形式将编码后的 post 数据传给 requests 的 data 属性

如果表单处理的文本:enctype 的值是 application/x-www-form-urlencoded,也是默认值

如果表单处理的是提交文件:enctype 的值是 multipart/form-data

enctype 表示表单提交的数据的编码方式

如果将字典传给 requests 的 data 属性:requests 自动为数据进行编码

如果将字符串传给 requests 的 data 属性:requests 会直接发送字符串数据

In [12]: from urllib.parse import urlencode

# 对 post 数据进行 gb2312 编码

In [13]: data_gb2312 = urlencode(data, encoding='gb2312')

# 在 HTTP头部 添加 application/x-www-form-urlencoded

In [14]: headers = {

...: 'Content-Type': 'application/x-www-form-urlencoded'}

In [15]: res = requests.post(url, data=data_gb2312, headers=headers)

In [16]: res.encoding = 'gb2312'

In [17]: soup = BS(res.text, 'lxml')

In [18]: for item in soup.findAll('strong'):

...: print(item.parent.parent.text.replace('\n', ''))

...:

楼栋:女生九栋

房间号-端口号:101-1

IP地址:10.0.79.2

子网掩码:255.255.255.0

默认网关:10.0.79.1

首选DNS服务器:192.168.170.254

python request url编码_Python 爬虫 (requests) 发送中文编码的 HTTP POST 请求相关推荐

  1. python request url编码_Python爬虫进阶——Request对象之Get请求与URL编码【英雄联盟吧】...

    在上一篇中,我们是通过urllib.request.urlopen直接访问的网页地址,但在实际应用中,我们更多地使用urllib.request.Request对象,因为其可以封装headers和da ...

  2. python request url 转义_Python爬虫入门笔记

    来源:blog.csdn.net/weixin_44864260 爬虫四大步骤: 1.获取页面源代码 2.获取标签 3.正则表达式匹配 4.保存数据 1. 获取页面源代码 5个小步骤: 1.伪装成浏览 ...

  3. python request url 转义_Python多线程抓取Google搜索链接网页

    1)urllib2+BeautifulSoup抓取Goolge搜索链接 近期,参与的项目需要对Google搜索结果进行处理,之前学习了Python处理网页相关的工具.实际应用中,使用了urllib2和 ...

  4. python request headers获取_Python爬虫实战—— Request对象之header伪装策略

    在header当中,我们经常会添加两个参数--cookie 和 User-Agent,来模拟浏览器登录,以此提高绕过后台服务器反爬策略的可能性. User-Agent获取 User-Agent可通过随 ...

  5. python post请求实例_Python使用requests发送POST请求实例代码

    本文研究的主要是Python使用requests发送POST请求的相关内容,具体介绍如下. 一个http请求包括三个部分,为别为请求行,请求报头,消息主体,类似以下这样: 请求行 请求报头 消息主体 ...

  6. python url编码_python url编码和解码

    一.为什么要进行Url编码 url带参数的请求格式为(举例): http://www.baidu.com/s?k1=v1&k2=v2 当请求数据为字典data = {k1:v1, k2:v2} ...

  7. python使用代理爬虫_python爬虫requests使用代理ip

    python爬虫requests使用代理ip 一.总结 一句话总结: a.请求时,先将请求发给代理服务器,代理服务器请求目标服务器,然后目标服务器将数据传给代理服务器,代理服务器再将数据给爬虫. b. ...

  8. python用法查询笔记_Python爬虫学习笔记(三)

    handler处理器自定义 - Cookies && URLError && json简单使用 Cookies: 以抓取https://www.yaozh.com/为例 ...

  9. python 12306抢票_Python爬虫实战:12306抢票开源!

    今天就和大家一起来讨论一下python实现12306余票查询(pycharm+python3.7),一起来感受一下python爬虫的简单实践 我们说先在浏览器中打开开发者工具(F12),尝试一次余票的 ...

最新文章

  1. 测试与封装5.1.5.2
  2. Python深度学习:基于PyTorch [Deep Learning with Python and PyTorch]
  3. 一天一个设计模式(3)——单例模式
  4. Javaweb 第15天 web练习和分页技术
  5. MySQL 全文搜索支持, mysql 5.6.4支持Innodb的全文检索和类memcache的nosql支持
  6. 前凸后翘的步进电机调速算法~
  7. 信息学奥赛C++语言:奇数1
  8. dubbo学习总结三 消费端
  9. 【Spark】reduceByKey和GroupByKey
  10. 经纬度绘图_Python气象绘图教程(二十二)—mpl_toolkits.axes_grid1
  11. dfs Codeforces Round #356 (Div. 2) D
  12. Java删除文件夹下所有文件
  13. 摩尔斯电码对照表—Morse code
  14. P1138 第k小整数
  15. 斜线/、反斜线\、双斜线//、双反斜线\\ ,区别
  16. nodejs mysql knex_nodejs之knex模块从安装到使用
  17. visualassist飞鸟的专栏
  18. 全国计算机技术与软件专业技术资格(水平)考试【软件评测师】-考试内容总结(一)计算机系统构成及硬件基础知识...
  19. swagger excel下载提示打不开
  20. 生活随机-谨慎的司机

热门文章

  1. 讲解SQL Server定时作业job的设置方法
  2. python意外缩进引发逻辑错误_python – IndentationError:意外的缩进错误
  3. cors 前后端分离跨域问题_SpringBoot 实现前后端分离的跨域访问(CORS)
  4. 可以操作excel吗_Excel快速填充,这四种方法你会吗?操作逆天告别加班
  5. matplotlib的colorbar自定义刻度范围
  6. tf.nn.dropout
  7. 组合数学-- 放回取样基础公式证明
  8. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 18丨即时食物配送 I【难度简单】​
  9. Spring Data JPA 从入门到精通~@Query详解
  10. Change Value to Reference(将值对象改为引用对象)