get请求的quote方法
我们先来个爬虫三板斧:
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)