python爬虫-urllib-get请求的quote方法

get请求的quote方法

首先来个拓展小知识:编码集的演变‐‐‐
由于计算机是美国人发明的,因此,最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号,
这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122。
但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,
所以,中国制定了GB2312编码,用来把中文编进去。
你可以想得到的是,全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc‐kr里,
各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。
因此,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。
现代操作系统和大多数编程语言都直接支持Unicode。

我们先来个爬虫三板斧:

import urllib.request
url='https://www.baidu.com/s?wd='
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36'
}

#请求对象的定制

request=urllib.request.Request(url=url,headers=headers)

#模拟浏览器向服务器发送请求

response=urllib.request.urlopen(request)

#获取响应的内容

content=response.read().decode('utf-8')
print(content)

我们观察到wd=后面就是搜索的内容,但是我们从拓展中得知中文必须要转换成unicode才能识别,这时候我们用到get请求中的quote方法。
完整代码:

import urllib.request
import urllib.parse
url='https://www.baidu.com/s?wd='
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36'
}

#将周杰伦转换成unicode编码的格式
name=urllib.parse.quote('周杰伦')
url=url+name
#请求对象的定制

request=urllib.request.Request(url=url,headers=headers)

#模拟浏览器向服务器发送请求

response=urllib.request.urlopen(request)

#获取响应的内容

content=response.read().decode('utf-8')
print(content)

get请求的urlencode方法

上面的quote方法面对几个的数据时还能正常使用,但是一旦要处理大量的数据就显得力不从心,这里引进urlencode方法,它可以将数据从字典中提取并转换成unicode编码格式,并用&符号自动连接,在处理大量数据时有优势。
看代码就懂了:



import urllib.request
import urllib.parse
url='https://www.baidu.com/s?'

base_url='https://www.baidu.com/s?'
data={
'wd':'周杰伦',
'sex':'男',
'location':'中国台湾省'
}
new_data=urllib.parse.urlencode(data)
url=base_url+new_data


headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36'
}

#将周杰伦转换成unicode编码的格式
name=urllib.parse.quote('周杰伦')
url=url+name
#请求对象的定制

request=urllib.request.Request(url=url,headers=headers)

#模拟浏览器向服务器发送请求

response=urllib.request.urlopen(request)

#获取响应的内容

content=response.read().decode('utf-8')
print(content)










  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值