urllib_get请求的quote方法

目录

一、编码的由来

二、使用urllib.parse的quote方法


一、编码的由来

二、使用urllib.parse的quote方法

我在百度搜索‘胡彦斌’,结果为:

现在我想通过urllib来获取该页面的源码,正常来说,是把地址栏(https://www,baidu.com/s?wd=胡彦斌)复制到url中,但是当我们正在执行时,会发现复制过来的并不是汉字:

url='https://www.baidu.com/s?wd=%E8%83%A1%E5%BD%A6%E6%96%8C'

这是因为它自动帮我们转成了Unicode编码,通过这个url会正确地获取页面源码。

代码:

import urllib.request

#使用https方式进行请求,会遇到UA反爬
url='https://www.baidu.com/s?wd=%E8%83%A1%E5%BD%A6%E6%96%8C'
# 将UA存储在字典中
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0'
}
# 将url和headers定制成一个request对象
request = urllib.request.Request(url=url,headers=headers)
# 使用urlopen方法得到页面内容
response = urllib.request.urlopen(request)
# 读取页面源码,并转成正确的格式
content = response.read().decode('utf-8')
print(content)

运行结果(联网状态下运行):

但是如果我们使用url='https://www.baidu.com/s?wd=胡彦斌‘,就不行,因为ascii识别不了汉字,所以我们需要把'胡彦斌'通过unicode标准转成ascii。

首先我们需要用到urllib.parse,所以先导入

import urllib.parse

然后使用quote方法,将’胡彦斌‘转成Unicode字符,在将其与url拼接

url='https://www.baidu.com/s?wd='
name= urllib.parse.quote('胡彦斌')
url = url + name

完整代码:

import urllib.request
import urllib.parse
#使用https方式进行请求,会遇到UA反爬
url='https://www.baidu.com/s?wd='
name= urllib.parse.quote('胡彦斌')
url = url + name
print(url)
# 将UA存储在字典中
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0'
}
# 将url和headers定制成一个request对象
request = urllib.request.Request(url=url,headers=headers)
# 使用urlopen方法得到页面内容
response = urllib.request.urlopen(request)
# 读取页面源码,并转成正确的格式
content = response.read().decode('utf-8')
print(content)

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值