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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报