USEGEAR

导航

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 2023-06-26 17:13  USEGEAR  阅读(9)  评论(0编辑  收藏  举报