【Python网络爬虫】150讲轻松搞定Python网络爬虫付费课程笔记 篇六——爬虫基本库的使用2 (requests 库)

 requests 库  第三方库

1. 发送GET/POST请求

import requests

# 添加headers 和 查询参数 信息

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

kw = {'wd': '中国'}
response = requests.get(url, headers=headers, params=kw)
print(response)

#查询响应内容
# print(response.text)  #返回Unicode格式数据
#
# print(response.content) #返回字节流数据
# print(response.content.decode('utf-8')) #产生乱码时

print(response.url)
print(response.encoding)    #响应字符编码

注意,content和text的不同,

response.text 返回的是Unicode格式数据

response.content 返回的是字节流数据,当出现乱码时需要使用decode()进行解码

2. Proxies 代理

之前在urllib库的介绍中已经介绍过代理IP的使用,在requests中代理的原理都是一样的,使用起来不同的地方在于 requests库更简洁方便,直接将代理放到了请求方法的proxies属性中即可,如下:

import requests

url = 'http://httpbin.org/ip'
proxy = {
    'http': '123.160.68.74:9999'
}
resp = requests.get(url, proxies=proxy)
print(resp.text)

 

3. Cookie

如果一个响应中包含了cookie,那么可以利用cookies 属性拿到这个返回cookie值

3.1 利用cookie实现模拟登录

import requests

# resp = requests.get('https://www.baidu.com/')
# print(resp.cookies)
# print(resp.cookies.get_dict())

url = 'https://www.zhihu.com/hot'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36',
    'cookie': '_zap=9cb16e80-2e5a-442a-ad83-8c4e56151274; d_c0="AHBUkeFrFhGPThKJGfZWuvXPYdeDQlxWqI4=|1586342451"; _xsrf=KGrwON9rdqf1Va6QrWyiLwNOTRoK5SPY; _ga=GA1.2.925220024.1595327992; Hm_lvt_98beee57fd2ef70ccdd5ca52b9740c49=1595327992,1595330061,1595376694; capsion_ticket="2|1:0|10:1599905310|14:capsion_ticket|44:NzhiNDdjZDFjNjBiNDAxOThhNWI3ODQ0MDJhMGQxZGU=|c18f9b858f5a3b1953d240092ab6d1be2fcdd60cb4ca8bdcb531a2161f93fb1b"; z_c0="2|1:0|10:1599905438|4:z_c0|92:Mi4xbkV5a0JRQUFBQUFBY0ZTUjRXc1dFU2NBQUFDRUFsVk5uaXVFWHdEQXZmUFJ5Y0x4WC1ySS1wQ0dYQnl5ZHh3RVhB|29705d2526c129e3642b869de321e6f086c38b17aa2c1285a131192d2de3477b"; tst=h; tshl=; q_c1=1de7075e7f0448aeb62af8961806c2f1|1599916711000|1588725781000; KLBRSID=2177cbf908056c6654e972f5ddc96dc2|1599917151|1599915145'
}
resp = requests.get(url, headers=headers)
print(resp.text)

3.2 Session,实现共享cookie

import requests

post_url = 'https://i.meishi.cc/login.php?redirect=https%3A%2F%2Fwww.meishij.net%2F'

post_data = {
    'username':'[email protected]',
    'password':'wq15290884759.'
}
headers={
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'
}

# 登录
session = requests.session()
session.post(post_url,headers=headers,data=post_data)


#访问个人网页
url = 'https://i.meishi.cc/cook.php?id=13686422'

resp = session.get(url)
print(resp.text)

 

4. 处理不信任的SSL证书

4.1 SSL证书

SSL证书是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本。因为配置在服务器上,也称为SSL服务器证书。

SSL证书就是遵守 SSL协议,由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能。

https://baike.baidu.com/item/SSL%E8%AF%81%E4%B9%A6/5201468?fr=aladdin

如果时不信任SSL请求时会出现报错:如下面这个请求出现报错

import requests

url = 'https://inv-veri.chinatax.gov.cn/'
resp = requests.get(url)

print(resp.text)

因此,针对这种情况添加 verify属性值之后便能够正常访问。

import requests

url = 'https://inv-veri.chinatax.gov.cn/'
resp = requests.get(url, verify=False)

print(resp.text)

猜你喜欢

转载自blog.csdn.net/weixin_44566432/article/details/108561841
今日推荐