Python中Requests库的基本使用

python爬虫从入门到放弃

什么是Requests库

  • Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库
  • 其实urllib还是非常不方便的,而Requests它会比urllib更加方便,可以节约我们大量的工作。(用了requests之后,你基本都不愿意用urllib了)一句话,requests是python实现的最简单易用的HTTP库,建议爬虫使用requests库。
  • 默认安装好python之后,是没有安装requests模块的,需要单独通过pip安装

Requests功能

1.总体功能

1
2
3
4
5
6
7
8
9
import requests
response = requests.get("https://www.baidu.com")
print(type(response))
print(response.status_code)
print(type(response.text))
print(response.text)
print(response.cookies)
print(response.content)
print(response.content.decode("utf-8"))

response使用起来确实非常方便,这里有个问题需要注意一下:

  • 很多情况下的网站如果直接response.text会出现乱码的问题,所以这个使用response.content,这样返回的数据格式其实是二进制格式,然后通过decode()转换为utf-8,这样就解决了通过response.text直接返回显示乱码的问题。
  • 请求发出后,Requests 会基于 HTTP 头部对响应的编码作出有根据的推测。当你访问 response.text 之时,Requests 会使用其推测的文本编码。你可以找出 Requests 使用了什么编码,并且能够使用response.encoding 属性来改变它.如:
    1
    2
    3
    response =requests.get("http://www.baidu.com")
    response.encoding="utf-8"
    print(response.text)
    不管是通过**response.content.decode(“utf-8”)的方式还是通过response.encoding=”utf-8”**的方式都可以避免乱码的问题发生。

2.各种请求方式

  • 基本GET请求
    1
    2
    3
    import requests
    response = requests.get('https://doubler.cn/get')
    print(response.text)
  • 含参数的GET请求
    1
    2
    3
    import requests
    response = requests.get("https://doubler.cn/get?name=zhujialei&age=20")
    print(response.text)
  • 解析json
    1
    2
    3
    4
    5
    6
    7
    import requests
    import json
    response = requests.get("http://httpbin.org/get")
    print(type(response.text))
    print(response.json())
    print(json.loads(response.text))
    print(type(response.json()))
  • 添加headers
    1
    2
    3
    4
    5
    6
    import requests
    headers = {
    "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
    }
    response =requests.get("https://www.zhihu.com",headers=headers)
    print(response.text)
  • 基本POST请求
    通过在发送post请求时添加一个data参数,这个data参数可以通过字典构造成,这样对于发送post请求就非常方便:
    1
    2
    3
    4
    5
    6
    7
    import requests
    data = {
    "name":"zhujialei",
    "age":20
    }
    response = requests.post("https://doubler.cn/post",data=data)
    print(response.text)

Python中Requests库的基本使用
https://chujian521.github.io/blog/2018/08/03/Python中Requests库的基本使用/
作者
Encounter
发布于
2018年8月3日
许可协议