1.爬虫请求模块urllib.request
- urllib.request.urlopen('网址') 作用向一个网站发送请求并获取响应
-
字节流
- response.read() 获取服务器响应内容
- response.getcode() 返回 HTTP响应码
- response.geturl() 返回 是技术的URL(防止重新定向问题)
-
字符串 response.read().decode('utff-8')
-
urllib.request.Resquest('网址',headers='字典')
urlopen() 不支持重构user-agent
-
2.urllib.parse模块
- 常用方法 urlencode(字典)
- quote(字符串)(这个里面的参数是个字符串)
-2.1请求方式
- GET 特点:查询参数在UURL地址中显示
- POST
- 在Request方法中添加data参数
urllib.request.Request(url,data=data,headers=headers) - data : 表单数据以bytes类型提交,不能是str
- 在Request方法中添加data参数
import ssl
import urllib.request
import urllib.parse
context = ssl._create_unverified_context()
headers={
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36'
}
# 发起请求 获取响应
req = urllib.request.Request(url,headers=headers) #重新构建一个Request请求
res = urllib.request.urlopen(req,context=context) # 传入上下文参数:context,以解决证书无法验证问题
html = res.read().decode('utf-8') # 获取文本形式上的内容
-
GET和POST时 需要对数进行url编码(urllib.parse.urlencode)
key = input('请输入关键词 : ') self.data['i'] = key data = urllib.parse.urlencode(self.data) data_bytes = bytes(data,'utf-8') req = urllib.request.Request(self.base_url,data=data_bytes,headers=self.headers) res = urllib.request.urlopen(req) html = res.read().decode('utf-8')
网友评论