admin 管理员组文章数量: 1086019
Python爬虫——Get和Post请求的使用
Python爬虫——Get和Post请求的使用
1、Get请求
GET请求一般用于我们向服务器获取数据( urllib默认使用get请求),比如搜索:毛不易,地址栏中的 URL 信息:
其中wd 表示搜索字符串的键,而“毛不易”则代表输入的值
在网页地址栏中删除wd后面多余的查询条件,最后显示的 URL 如下:
=毛不易
但在上图Headers请求头里,发送的请求是:
=%E6%AF%9B%E4%B8%8D%E6%98%93&ie=utf-8&tn=15007414_2_pg
同样删除wd后面多余的查询条件,最后显示的 URL 如下:
=%E6%AF%9B%E4%B8%8D%E6%98%93
? 后面出现的那个长长的字符串,就是搜索关键字“毛不易”的Unicode的编码格式。
quote()
quote(str):对字符串str进行Unicode编码,如:urllib.parse.quote(‘毛不易’)
import urllib.request
import urllib.parseurl = '='#调用quote()对关键字进行Unicode编码
name = urllib.parse.quote('毛不易')
#打印Unicode编码后的字符串
print(name) #%E6%AF%9B%E4%B8%8D%E6%98%93
#拼接url
url = url+name
print(url) #=%E6%AF%9B%E4%B8%8D%E6%98%93
#构建请求头
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.5261 SLBChan/10'}
request = urllib.request.Request(url=url,headers=headers)
response = urllib.request.urlopen(request)
content = response.read().decode('utf-8')
print(content)
执行结果:
urlencode()
urlencode():对查询字符串的字典进行编码,如下:
dict = {'wd':'毛不易','sex':'男','age':30
}
urllib.parse.urlencode(dict)
使用实例:
import urllib.request
import urllib.parsebase_url = '?'
param = {'wd':'毛不易','sex':'男','age':30
}#urlencode()对关键字进行Unicode编码
new_param = urllib.parse.urlencode(param)#打印Unicode编码后的字符串
print(new_param)
#拼接url
url = base_url+new_param
print(url)
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.5261 SLBChan/10'}
request = urllib.request.Request(url=url,headers=headers)
response = urllib.request.urlopen(request)
content = response.read().decode('utf-8')
print(content)
执行结果:
wd=%E6%AF%9B%E4%B8%8D%E6%98%93&sex=%E7%94%B7&age=30
=%E6%AF%9B%E4%B8%8D%E6%98%93&sex=%E7%94%B7&age=30
2、Post请求
post请求的参数不会拼接到ul后面,而是放在定制请求的第二个参数位置上
post请求的参数需要进行两次编码,第一次urlencode:对字典参数进行Unicode编码转成字符串,第二次encode:将字符串数据转换为字节类型
使用实例:
import urllib.request
import urllib.parse
import json#百度翻译
url = ''headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.5261 SLBChan/10'}#post请求参数
param = {'kw':'剪刀'
}#post请求参数需要进行两次编码,第一次urlencode:对字典参数进行Unicode编码转成字符串,第二次encode:将字符串数据转换为字节类型
param = urllib.parse.urlencode(param).encode('utf-8')#post定制请求可以使用位置传参
request = urllib.request.Request(url,param,headers)response = urllib.request.urlopen(request)
print(response)#解码读取数据
page = response.read().decode('utf-8')#反序列化,将字节对象转成python对象
content = json.loads(page)
print(content)
print(type(content))
执行结果:
<http.client.HTTPResponse object at 0x000002CFA6D04F60>{'errno': 0, 'data': [{'k': '剪刀', 'v': 'scissors; shears; forfex; clipper; [电影]Scissors'}, {'k': '剪刀石头布', 'v': '名. rock, paper,scissors'}, {'k': '剪刀手爱德华', 'v': '名. Edward Scissorhands'}]}<class 'dict'>
本文标签: Python爬虫Get和Post请求的使用
版权声明:本文标题:Python爬虫——Get和Post请求的使用 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1693405781a220051.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论