USEGEAR

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

python练习-爬虫(续)

流程:

1 设置url

2 设置消息头

3 设置消息体

4 获取响应

5 解析相应

6 验证数据

 

接下来就是查询数据了。

复制代码
# 识别图片中的文字
#image = Image.open('captcha.png')
image = Image.open('G:\Python爬虫\captcha.png')
code = pytesseract.image_to_string(image)

# 从用户输入获取用户名、身份证号码和验证码
username = 'XXX'  
# input("请输入用户名:")
id_card = '123456789012345678'
#input("请输入身份证号码:")
ip = '1.1.1.1'
# 构造查询所需的数据
data = {
    "pusername":username,
    "idcard": id_card,
    "ip":ip,
    "verifycode": code.strip()
}
print(data)
# 发送查询请求
response = requests.post("http://xyz/xyinfo.do?method=query", data=urllib.parse.urlencode(data, encoding='gb2312'), headers=headers4query)
# 输出查询结果
print(response.text)
print(data)
复制代码

这里一个坑,请注意:

通过抓取包,发现发送的:

pusername=%D0%EC%123A%E131C%C120%B121C&idcard=323123123121231231&ip=1.1.1.1&verifycode=3313

是gb2312。在程序中也要进行对应转换。语句如下:


response = requests.post("http://xyz/xyinfo.do?method=query", data=urllib.parse.urlencode(data, encoding='gb2312'), headers=headers4query)

同时注意header中:'Content-Type': 'application/x-www-form-urlencoded;charset=gb2312',不要改成其它格式。

 

goodluck

 

补课:

四种编码方式如下,在header中设置:

1、application/x-www-form-urlencoded

POST http://www.example.com HTTP/1.1    
Content-Type:application/x-www-form-urlencoded;charset=utf-8

2、multipart/form-data

POST http://www.example.com HTTP/1.1
Content-Type:multipart/form-data; 

3、application/json

4、text/xml

 

post请求四种传送正文方式:

  • 请求正文是application/x-www-form-urlencoded
  • 请求正文是multipart/form-data
  • 请求正文是raw
  • 请求正文是binary

posted on   USEGEAR  阅读(10)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
点击右上角即可分享
微信分享提示