Python-爬虫基础十一(POST请求百度翻译)

一、POST请求数据流程

以百度翻译网页进行分析。使用场景为:用户填入信息,页面对其进行翻译。

按 F12 打开控制台,依次点击 Network > XHR(此为异步加载的网络数据包),再点击左侧 URL 链接,在右侧的 payload和Preview 栏能够看到对响应内容的预览信息,其中包含用户输入的内容,故此 URL 是我们需要的。

 

确定了URL信息,点击 Headers 栏,查看整个请求信息

 

整体逻辑是:用户在页面输入文字信息后,程序会生成对应的表单数据(Payload 栏中的 Form Data),用其数据和 Headers 信息(Headers 栏中 Request Headers)向 URL(Headers 栏中 General 里的 Request URL) 发起 POST 请求,服务端响应并返回数据(Preview 栏中信息)。

实例一:

#post请求   https://fanyi.baidu.com/sug
import urllib.request
import urllib.parse
url = ' https://fanyi.baidu.com/sug'
#请求头复制过来
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36'
}
#声明需要查什么单词语句
q = input('请输入要查询的单词:')
data = {
    'kw':q
}
# post请求的参数 必须要进行编码
data = urllib.parse.urlencode(data).encode('utf-8')
# post的请求的参数 是不会拼接在url的后面的  而是需要放在请求对象定制的参数中
# post请求的参数 必须要进行编码
request = urllib.request.Request(url=url,data=data,headers=headers)
# 模拟浏览器向服务器发送请求
response = urllib.request.urlopen(request)
# 获取响应的数据
content = response.read().decode('utf-8')
# 字符串--》json对象
import json
obj = json.loads(content)
print(obj)

 

posted @ 2022-05-20 16:17  LuckinAaron  阅读(433)  评论(0编辑  收藏  举报