模拟GET请求和POST请求
利用parse模块模拟GET请求
这个昨天已经说了 有兴趣的可以回过头来看一下
from urllib import request, parse
if __name__ == '__main__':
url = "https://www.baidu.com/s?"
wd = input("输入要搜索的东西:")
qs = {
"wd": wd
}
qs = parse.urlencode(qs)8
fullurl = url + qs
print(fullurl)
rsp = request.urlopen(url)
print(type(rsp))
print(rsp)
html = rsp.read()
html = html.decode()
利用parse模块模拟POST请求
"""
利用parse模块模拟post请求
分析百度翻译
分析步骤:
1- 浏览器浏览百度翻译打开F12
2- 尝试输入一个单词(我输入的是one) ,发现每敲一个字母后都有请求
3- 请求地址 https://fanyi.baidu.com/sug
4- 利用Network-all-hearders,查看,发现Formdata的值是 kw:one
5- 检查返回内容格式,发现返回的是json格式内容==>需要用到json包
"""
from urllib import request, parse
import json
"""
1- 利用data构造内容
2- 返回一个json格式的结果
3- 结果应该是用户输入的释义
"""
url = 'https://fanyi.baidu.com/sug'
a = input("输入想要翻译的一个单词:")
data = {
'kw': a
}
data = parse.urlencode(data).encode()
headers = {
'Content-Length':len(data)
}
rsp = request.urlopen(url, data=data)
json_data = rsp.read().decode()
print(json_data)
json_data = json.loads(json_data)
print(json_data)
for itme in json_data['data']:
print(itme['k'], "- -", itme['v'])
"""
- request.data使用
- 访问网络的两种方法
- get:
- 利用参数给服务器传递信息
- 参数为dict,然后parse编码
- post:
- 一般向服务器传递参数使用
- post是吧信息自动加密处理
- 我们如果想使用psot信息,需要用到data参数
- 使用post,意味着http请求头可能需要更改:
- content-type:application/x-www.form-urlencode
- content-length: 数据长度
- 简而言之,一旦更改请求方法,请注意其他请求头部信息相适应
- urllib.parse.urlencode可以将字符串自动转换成上面的
"""
使用Request
"""
利用parse模块模拟post请求
分析百度翻译
分析步骤:
1- 浏览器浏览百度翻译打开F12
2- 尝试输入一个单词(我输入的是one) ,发现每敲一个字母后都有请求
3- 请求地址 https://fanyi.baidu.com/sug
4- 利用Network-all-hearders,查看,发现Formdata的值是 kw:one
5- 检查返回内容格式,发现返回的是json格式内容==>需要用到json包
"""
from urllib import request, parse
import json
"""
1- 利用data构造内容
2- 返回一个json格式的结果
3- 结果应该是用户输入的释义
"""
url = 'https://fanyi.baidu.com/sug'
a = input("输入想要翻译的单词:")
data = {
'kw': a
}
data = parse.urlencode(data).encode()
headers = {
'Content-Length':len(data)
}
req = request.Request(url=url, data=data, headers=headers)
rsp = request.urlopen(req)
json_data = rsp.read().decode()
print(json_data)
json_data = json.loads(json_data)
print(json_data)
for itme in json_data['data']:
print(itme['k'], "- -", itme['v'])
两个输出的结果是一样的
今天早上先讲到这
下午看情况发博客
每天发发博客记录自己