python中数据爬虫requests库使用方法详解

时间:2021-05-22

一、什么是Requests

Requests 是Python语编写,基于urllib,采Apache2 Licensed开源协议的 HTTP 库。它urllib 更加方便,可以节约我们大量的工作,完全满足HTTP测试需求。

一句话——requests是python实现的简单易用的HTTP库

二、安装Requests库

进入命令行win+R执行

命令:pip install requests

项目导入:import requests

三、各种请求方式

直接上代码,不明白可以查看我的urllib的基本使用方法

import requestsrequests.post('http://httpbin.org/post')requests.put('http://httpbin.org/put')requests.delete('http://httpbin.org/delete')requests.head('http://httpbin.org/get')requests.options('http://httpbin.org/get')

这么多请求方式,都有什么含义,所以问下度娘:

  • GET: 请求指定的页面信息,并返回实体主体。
  • HEAD: 只请求页面的首部。
  • POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。
  • PUT: 从客户端向服务器传送的数据取代指定的文档的内容。
  • DELETE: 请求服务器删除指定的页面。
  • get 和 post比较常见 GET请求将提交的数据放置在HTTP请求协议头中
  • POST提交的数据则放在实体数据中
  • (1)、基本的GET请求

    import requestsresponse = requests.get('http://httpbin.org/get')print(response.text)

    返回值:

    { "args": {}, "headers": { "Accept": "**", "Accept-Encoding": "gzip, deflate", "Connection": "close", "Host": "httpbin.org", "User-Agent": "python-requests/2.18.4" }, "origin": "183.64.61.29", "url": "http://httpbin.org/get?name=germey&age=22"}

    或者使用params的方法:

    import requestsdata = { 'name': 'germey', 'age': 22}response = requests.get("http://httpbin.org/get", params=data)print(response.text)

    返回值一样

    (3)、解析json

    将返回值已json的形式展示:

    import requestsimport jsonresponse = requests.get("http://httpbin.org/get")print(type(response.text))print(response.json())print(json.loads(response.text))print(type(response.json()))

    返回值:

    <class 'str'>
    {'args': {}, 'headers': {'Accept': '**', 'Accept-Encoding': 'gzip, deflate', 'Connection': 'close', 'Host': 'httpbin.org', 'User-Agent': 'python-requests/2.18.4'}, 'origin': '183.64.61.29', 'url': 'http://httpbin.org/get'}
    <class 'dict'>

    (4)、获取二进制数据

    记住返回值.content就ok了

    import requestsresponse = requests.get("https://github.com/favicon.ico")print(type(response.text), type(response.content))print(response.text)print(response.content)

    返回值为二进制不必再进行展示,

    (5)、添加headers

    有些网站访问时必须带有浏览器等信息,如果不传入headers就会报错,如下

    import requestsresponse = requests.get("https://", proxies=proxies)print(response.status_code)

    ip可以从网上抓取,或者某宝购买

    如果代理需要设置账户名和密码,只需要将字典更改为如下:

    proxies = {"http":"http://user:password@127.0.0.1:9999"}

    如果你的代理是通过sokces这种方式则需要pip install "requests[socks]"

    proxies= {"http":"socks5://127.0.0.1:9999","https":"sockes5://127.0.0.1:8888"}

    (6)、超时设置

    访问有些网站时可能会超时,这时设置好timeout就可以解决这个问题

    import requestsfrom requests.exceptions import ReadTimeouttry: response = requests.get("http://httpbin.org/get", timeout = 0.5) print(response.status_code)except ReadTimeout: print('Timeout')

    正常访问,状态吗返回200

    (7)、认证设置

    如果碰到需要认证的网站可以通过requests.auth模块实现

    import requestsfrom requests.auth import HTTPBasicAuthresponse = requests.get("http://120.27.34.24:9001/",auth=HTTPBasicAuth("user","123"))print(response.status_code)

    当然这里还有一种方式

    import requestsresponse = requests.get("http://120.27.34.24:9001/",auth=("user","123"))print(response.status_code)

    (8)、异常处理

    遇到网络问题(如:DNS查询失败、拒绝连接等)时,Requests会抛出一个ConnectionError 异常。

    遇到罕见的无效HTTP响应时,Requests则会抛出一个 HTTPError 异常。

    若请求超时,则抛出一个 Timeout 异常。

    若请求超过了设定的最大重定向次数,则会抛出一个 TooManyRedirects 异常。

    所有Requests显式抛出的异常都继承自 requests.exceptions.RequestException 。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

    声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

    相关文章