python爬虫基础--requests模块

目录

知识点回顾

关于requests库的介绍

基本使用

安装

导入

各类基本请求

 基本的post请求和get请求

 requests伪装爬虫

伪装请求头 

 代理ip访问

requests的其他功能

设置超时时间

session自动保存cookies 

ssl验证 

作用


知识点回顾

代理ip的原理、分类及如何使用

爬虫cookie的使用、登录后保存及读取

请求异常处理 

关于requests库的介绍

requests是一个擅长处理复杂HTTP请求、cookie、header等内容的第三方库。

该库创建者Kenneth Reitz对python标准库工具的评价:

python标准库urllib2为你提供了大多数HTTP功能,但是他的API非常差劲。它是为当时的web创建的。即使最简单的任务,它也需要大量的工作(甚至重写整个方法)。事情不应该这样复杂,在python中更不应该如此。

基本使用

安装

跟任何python第三方库一样,requests库也可以用其他第三方python库管理器(比如pip)安装,或者直接下载源代码安装。

pip安装:

pip install requests

导入

import requests

各类基本请求

req = requests.get("http://www.baidu.com")
req = requests.post("http://www.baidu.com")
req = requests.put("http://www.baidu.com")
req = requests.delete("http://www.baidu.com")
req = requests.head("http://www.baidu.com")
req = requests.options("http://www.baidu.com")

 基本的post请求和get请求

参数是字典,我们也可以传递json类型的参数:

import requests
from fake_useragent import UserAgent

def test_get():
    url = 'http://baidu.com/s'
    headers = {'User-Agent':UserAgent().chrome}
    # 构建传递的参数
    params = {'wd':'python爬虫'}
    resp = requests.get(url,headers=headers,params=params)
    print(resp.text[:1500])


def test_post():
    url = 'https://www.kuaidaili.com/login/'
    headers = {
        'User-Agent':UserAgent().chrome
    }
    data = {
    'login_type':'1',  
    'username':'xxxxxxx',
    'passwd':'xxxx',
    'next':'/'
    }
    resp = requests.post(url,headers=headers,data=data)
    print(resp.text[:1500])


if __name__ == '__main__':
    #test_get()
    test_post()

 requests伪装爬虫

爬虫里,伪装必不可少。

在requests中伪装爬虫跟urllib中的使用基本一致。

伪装请求头 

伪装请求头在采集信息时经常使用,我们可以用这个方法来隐藏身份。

 一样是使用fake_useragent随机生成请求头进行伪装。

import requests
from fake_useragent import UserAgent


def test_headers():
    url = 'http://httpbin.org/get'
    headers ={
        'User-Agent':UserAgent().chrome
    }
    resp = requests.get(url,headers=headers)
    print(resp.text)

 代理ip访问

 注意设置的格式为:

'type' :'type://ip:port'

import requests


def test_proxy():
    '''
    设置代理ip
    '''
    url = 'http://httpbin.org/get'
    headers ={
        'User-Agent':UserAgent().chrome
    }
    # 设置代理参数
    proxy = {
        # 'type' :'type://ip:port'
        'http':'http://202.109.157.62:9000',
    }
    resp = requests.get(url,headers=headers,proxies=proxy)
    print(resp.text)

requests的其他功能

除了自定义请求头和设置ip代理,requests还有相当丰富的功能。

设置超时时间

可以通过timeout属性设置超时时间,一旦超过这个时间还没获得响应内容,就会提示错误。

import requests
from fake_useragent import UserAgent

def test_timeout():
    url = 'http://www.github.com'
    headers = {
        'User-Agent':UserAgent().chrome
    }
    resp = requests.get(url,headers=headers,timeout=1) # 设置超时
    print(resp.text)

session自动保存cookies 

seesion的意思是保持一个会话,比如 登陆后继续操作(记录身份信息) 而requests是单次请求的请求,身份信息不会被记录 

import requests
from fake_useragent import UserAgent


def test_session():
    url ='https://www.kuaidaili.com/login/'
    headers = {
        'User-Agent':UserAgent().chrome
    }
    data = {
    'login_type':'1',  
    'username':'xxxxx',
    'passwd':'xxxx',
    'next':'/'
    }
    index_url ='https://www.kuaidaili.com/usercenter/overview'
    # 发送登录请求,为了登录后可以保存cookie,使用session对象
    s = requests.session()
    resp1 = s.post(url,data=data,headers=headers)

    # 登录成功后访问个人主页
    resp2 = s.get(index_url,data=data,headers=headers)
    with open('tmp.html','wb') as f:
        f.write(resp2.content)

ssl验证 

SSL验证(Secure Sockets Layer verification)是一种用于确保网络通信安全的协议。SSL验证通过对通信双方进行身份认证和数据加密来保护数据的传输过程。SSL验证使用了公钥加密和数字证书来实现安全通信。

在SSL验证中,服务器需要使用数字证书来证明自己的身份。数字证书由可信任的证书颁发机构(CA,Certificate Authority)签发,并包含了服务器的公钥。当客户端连接到服务器时,服务器会将数字证书发送给客户端。客户端会验证证书的合法性,包括验证证书的签发机构是否可信、证书是否过期等。如果验证通过,客户端会生成一个随机的对称密钥,并使用服务器的公钥加密该密钥,然后发送给服务器。服务器使用自己的私钥解密该密钥,并与客户端建立安全的加密通道。

这个一般用不到,用到就直接照搬,格式都是一样的!

# 禁用安全请求警告
requests.packages.urllib3.disable_warnings()
resp = requests.get(url, verify=False, headers=headers)

作用

  1. 身份验证:SSL验证确保客户端与服务器之间的身份真实性。客户端可以验证服务器的数字证书,确保连接到的是预期的服务器,而不是恶意伪造的服务器。

  2. 数据加密:SSL验证使用公钥加密算法来加密传输的数据,确保在传输过程中数据不会被窃取或篡改。

  3. 完整性保护:SSL验证使用消息摘要算法来计算数据的哈希值,并将其与数字签名一起传输,以验证数据在传输过程中是否被篡改。

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我还可以熬_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值