Requests模块爬虫

Requests:第三方封装的用于网络请求操作的一个模块,主要用于爬虫程序的开发,尤其以开发简单,上手容易、操作灵活、开发效率高著称,所以在实际项目操作过程中,requests模块是使用最多的爬虫操作模块。

1. 安装

    pip install requests
    #或者
    easy_install requests

简单爬虫案例:

   #引入需要的模块
   import requests
   #发送请求得到相应数据
   response = requests.get("https://www.taobao.com")
   #打印展示获取的数据
   print(response.text)

2. 各种设置

  • 2.1请求方式
    通过request直接调⽤用对应的函数/⽅方法即可完成
    一般只有 requests.get 和 requests.post 。

  • 2.2 附带普通参数的请求
    参数包含在⼀一个字典对象中,将字典对象交给requests的函数即可。

        # get 方式发送请求,包含参数,用 params 接收
        res = requests.get(URL, params = data) 
        # post 方式发送请求,包含参数 ,用 data 接收
        res = requests.post(URL, data = data)
    
  • 2.3 传递JSON参数
    在请求的过程中,有些URL接口需要的参数数据并不不是零散的数据,而是需要封装在一起的JSON数据,此时数据需要转化为json格式。

        # 引⼊入需要的模块  
        imoprt json
        # 封装参数的字典 
        data = {“city”:”郑州”} 
        # 转换参数 
        json_data = json.dumps(data) 
    
        get(url, json=..)--无效
        post(url, json=..)--常规操作[使用非常少],一般用data传递
    
  • 2.4 返回的数据和它编码操作
    返回的数据,可以根据数据的编码类型区分为二进制数据和文本数据,两种不同的数据通过两个不同的属性进行获取。

    response.content:获取响应中包含的二进制数据 response.text:获取响应中包含的文本数据
    如果出现乱码,可通过response的属性encoding,
      进行编码的获取和指定
    response.encoding = “编码(utf-8)”

  • 2.5 文件上传操作
    requests对象支持文件的数据流式处理,不需要将整个文件都加载到内存中,而是读取一部分传递一部分,将文件指定给requests请求的file参数即可。

    注意:文件的上传操作只能通过post()请求方式执行操作

      # 1.整个文件读取
      import requests
      # 打开文件 
      f = open(“d:/test.txt”, “r”) 
      # 包装文件参数 
      file = {“file”:f} 
      # 传递文件     
      response = requests.post(URL, files=file) 
    
      #2.流式数据传递方式
      import requests
      # 打开文件 
      with open(“d:/test.txt”, “r”) as f:    
          response = requests.post(URL, data=f) 
    
  • 2.6 cookie操作
    requests模块中对cookie的操作进行了封装,可以直接通过响应对象的cookie属性进行操作。

      import requests
      response = request(“http://www.badiu.com ” )  
      # 获取整个cookie 
      print(response.cookies)
      # 根据key获取指定的值
      print(r.cookies[“key”])
    
  • 2.7 请求超时设置
    如果要求对于数据操作性能有要求的话,可以通过传递timeout参数数据进行超时时间的设置,超过超时时间的连接自动 抛出异常。

      import requests
      response = requests.get(“http://github.com ” , timeout=0.1)
      异常信息:requests.exceptions.ConnectTimeout
    
  • 2.8 让多个请求包含在一个会话中
    一般情况下,爬虫操作获取目标数据都是短连接,也就是获取数据时连接服务器,每次发起请求就是一个连接,获取到服务器的响应数据后连接自动断开,再次发起请求时又是一个新的请求对象了。

      import requests
      response1 =requests.get() 
      response2 = requests.get()
      #上面的代码中,两次请求就不是同一个会话。
      #如果要进行多个请求包含在同一个会话中,
      #通过requests模块的会话对象Session()构建一个会话请求进行操作即可。
      import requests
      req = requests.Session()
      response1 = req.get()
      response2 = req.get() 
    
  • 2.9 SSL证书设置
    让爬虫程序类似浏览器一样验证https协议访问的网站,当网站的SSL无效时,爬虫无法访问,需要关闭HTTPS的SSL证书验证,通过设置请求参数verify=False关闭该验证。

      response = requests.get(URL,verify=False)   
    
  • 2.10 代理设置
    和urllib2一样,爬虫操作过程中,代理的设置是不可避免的一种技术手段。在requests模块中,通过将代理服务器端口配置在字典中,然后通过proxies参数进行设置即可。

      import requests
      proxies = { "https":"122.72.32.75:80" } 
      response = requests.get(URL, proxies=proxies)
      print (response.text)
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容