【爬虫基础】requests库

requests

  • 虽然python的标准库中urllib模块已经包含了平常我们使用的大多数功能,但是它的API使用起来让人感觉不太好
  • requests 是用python编写,基于urllib,但是比urllib更加方便

requests 关键字参数

  • method: 请求方法
  • url: 请求网址
  • headers:请求头字段
  • cookies:用户身份标识
  • proxies:ip代理的关键字参数
  • params:查询参数
  • data:请求参数 post请求
  • timeout:设置响应时间,一旦超时程序报错
  • allow_redirects:是否运行重定向
  • verify:是否验证证书
  • json:json提交参数
  • files:文件
  • auth:权限认证
  • stream:是否是数据流传输

响应体常见的方法和属性

  • text:获取响应体文本数据
  • content:获取响应体二进制数据
  • json():获取响应体的json数据,如果不是json数据,会报错
  • headers:查看响应体的响应头信息
  • encoding:指定响应体编码
  • apparent_encoding:自动识别响应体编码
  • cookies:获取响应体的cookies字段信息,得到的是RequestsCookieJar对象
  • url:获取响应体的url地址
  • status_code:获取响应体状态码
import requests
url = 'https://movie.douban.com/top250'
headers = {
    'Cookie': 'bid="xYzW76eUFk8"; __yadk_uid=XU38FA8bxpKrGZUK1KNEfbTp2VcwSYr4; __gads=ID=6db86c8088752a10-225dc67a68c40078:T=1603710897:RT=1603710897:S=ALNI_MaKwh8GKcMOamfPzR24mBE6kuNMoA; _pk_ref.100001.4cf6=%5B%22%22%2C%22%22%2C1603803210%2C%22https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3D5ySilQQPbwcNZs9RwHAuyDAobBcp2_xCj2lV3bceXeMRZLwzc7lQUqN2wmVhtSOl%26wd%3D%26eqid%3Dfcc151630008b5d4000000065f981848%22%5D; _pk_id.100001.4cf6=ce6b3b49020921cb.1603710897.3.1603803210.1603718808.; _pk_ses.100001.4cf6=*; __utma=30149280.1097713080.1601989162.1603718808.1603803210.4; __utmb=30149280.0.10.1603803210; __utmc=30149280; __utmz=30149280.1603803210.4.3.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; __utma=223695111.1702441161.1603710897.1603718808.1603803210.3; __utmb=223695111.0.10.1603803210; __utmc=223695111; __utmz=223695111.1603803210.3.2.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; ap_v=0,6.0',
    'Host': 'movie.douban.com',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36',
}
response = requests.get(url=url, headers=headers)
html_data = response.text
html_data.encode()  # 编码成二进制
# 响应体的常见的方法和属性
print('获取响应体的文本数据', response.text)  # 获取响应体的文本数据  str
print('获取响应体的二进制数据', response.content)  # 获取响应体的二进制数据  二进制
# print(response.json())  # 获取响应体的json数据, 如果数据不是json数据, 使用json()方法提取会报错
print('查看响应体的响应头信息', response.headers)  # 查看响应体的响应头信息
print('指定响应体编码',response.encoding)  # 指定响应体编码
print('自动识别响应体编码',response.apparent_encoding)  # 自动识别响应体编码
print('获取响应体的 cookies 字段信息', response.cookies)  # 获取响应体的 cookies 字段信息, 得到的是 RequestsCookieJar对象
print(response.cookies.get_dict()) # 以字典形式打印cookie
print('获取响应体的url地址', response.url)  # 获取响应体的url地址
print('获取响应体状态码', response.status_code)  # 获取响应体状态码

cookie

"""
利用cookie模拟登录
"""
import requests
header = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
    'cookie':''}
res = requests.post(post_url, headers=header)
print(res.text)

session 会话维持

"""
利用session进行cookie共享
代码格式:
"""
# 创建session对象
import requests 
session = requests.Session()
url_login = '登录网址'
header = {}
data = {'UserName':'',
		'password':''}
session.post(url_login, headers=header, data=data)  # 此时session中已经有了cookie
# 登录个人网页
url = '个人页面'
response = session.get(url)
print(response.text)

处理不受信任的SSL证书

  • 对于已经被信任的SSL证书的网站用requests库可以正常访问
import requests
import urllib3  # 爬虫模块
urllib3.disable_warnings()  # 忽略关闭认证ca证书之后引发的警告
url = 'https://data.stats.gov.cn/'
res = requests.get(url)
print(res.text) # 会报错
# verify=False  使用requests模块发送请求的时候,不验证ca证书,默认会验证(verify=True)
response = requests.get(url=url, verify=False)
print(response.text)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值