标签:不能 urlencode 类型 模拟浏览器 流程 win 赋值 -o code
# 需求: 爬去指定词条的,url 数据
import urllib.request
import urllib.parse
?
# 1. 指定url,只能使用ascll 编码格式。 所以如果带有中文。 需要进行,编码格式的转换.
?
# url 特性: url中不可以存在 fei1 ASCLL 编码的字符数据。
url = ‘https://www.baidu.com/s?wd=‘
word = urllib.parse.quote("阿纯") # 对特殊字符进行,特殊字符的转码。
url += word
print(url) # https://www.sogou.com/web?query=%E9%98%BF%E7%BA%AF
?
# 2. 发起请求, 且返回响应对象。
response = urllib.request.urlopen(url=url)
?
# 3. 使用相应对象,read 获取响应对象中,存储的页面 html 文档数据。(格式为 byte)
html_text = response.read()
?
# 4. 持久化存储, 保存到磁盘
with open("./chun.html", "wb") as f:
f.write(html_text)
print("donwload")
import urllib.request
import urllib.parse
?
url = ‘https://www.baidu.com/s?wd=‘
word = urllib.parse.quote("啊纯")
url += word
?
# UA 伪装:
#1. 自制定一个请求对象:headers 赋值一个字典格式的数据
headers = {
# 存储任意的请求头,信息
‘User-Agent‘:‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36‘
}
?
request = urllib.request.Request(url=url,headers=headers)
?
# 2.针对自制定的请求对象,发起请求
?
response = urllib.request.urlopen(request)
?
html_text = response.read()
?
with open("./chun.html", "wb") as f:
f.write(html_text)
?
# ok 到此, 简单的爬去已经完成。 而且 都是基于 GET 请求的方式, 发送的请求。
- urllib 模块发起POST请求。 实验一个,爬去百度翻译的翻译结果
- 浏览器中, 开发者工具, Network 中。 XHR 类型的请求,就是 基于Ajax的 POST请求。
- 在其中的所有的,请求中。寻找 Form Date 的参数。是我在 文本框中,输入的这个值的那条请求。就是我想要的。
# urllib
import urllib.request
import urllib.parse
?
# 指定url
url = ‘https://fanyi.baidu.com/sug‘
?
# POST请求携带参数的处理:流程:
# 1. 将 POST 请求的参数, 封装到字典中: 参数键, 与目标服务器的, 键 保持一致
data = {
‘kw‘:"西瓜"
}
?
# 2. 使用 parse.urlencode() 对封装的字典数据, 进行编码的处理. 返回字符串类型。
data = urllib.parse.urlencode(data)
# print(data, type(data)) # kw=%E8%A5%BF%E7%93%9C <class ‘str‘>
?
# 3. 将 第二步, 得到的 字符串类型的数据。 转换成 byte 类型。(因为网络传输 都是使用的 byte 类型进行传输)
data = data.encode()
?
?
# 4. 发起 POST 请求: data参数表示的就是,经过处理之后的 post 请求携带的参数.
response = urllib.request.urlopen(url=url, data=data)
?
# 这里得到的是 以个 josn 格式的 byte格式字符串。 需要将编码格式进行转换,然后才可查看。
?
标签:不能 urlencode 类型 模拟浏览器 流程 win 赋值 -o code
原文地址:https://www.cnblogs.com/chengege/p/10773642.html