Python3爬虫请求库的使用requests

Posted Infi_chu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3爬虫请求库的使用requests相关的知识,希望对你有一定的参考价值。

 Infi-chu:

http://www.cnblogs.com/Infi-chu/

一、基本用法:

1. 安装:

pip install requests

2. 例子:

import requests
url = \'http://www.baidu.com\'
r = requests.get(url)
print(type(r))    # 类型是str(JSON格式)
print(r.status_code)
print(r.text)
print(r.cookies)

【注】其余请求方法也是一样的

r = requests.post(url)
r = requests.put(url)
r = requests.delete(url)
r = requests.head(url)
r = requests.options(url)

3. GET请求:

  • 例子
import requests
url = \'http://www.baidu.com\'
r = requests.get(url)
print(r.text)

 若想在url中添加参数有两种方式:

  a. 直接添加

r = requests.get(url+参数)

  b. 通过params参数添加

import requests
data = {"name":"Infi-chu","age":"23"}
r = requests.get(url,params=data)

网页的返回类型是str类型,是JSON格式的,我们可以直接调用 json()方法

若返回结果不是JSON格式,便会出现解析错误,抛出 json.decode.JSONDecodeError异常

  • 抓取网页

可使用正则表达式和headers。

  • 抓取二进制数据

图片、音频、视频等文件本质上都是二进制码组成的。

抓取GitHub图标:

import requests
r = requests.get("http://github.com/favicon.ico")
print(r.text)
print(r.content)
# 保存图片
with open(\'favicon.ico\',\'wb\') as f:
    f.write(r.content)
  • 添加headers

在爬取知乎时必须在User-Agent中加入信息,否则不能爬取,会被拦截

4. POST请求

improt requests
data = {\'name\':\'Infi-chu\',\'age\'=\'23\'}
r = requests.post(\'http://www.baidu.com\',data=data)

 成功后会在form中看到所提交的数据(F12查看)

5. 响应

发送数据后,得到的就是响应,我们使用text和content获取了内容,下面是另外的信息:

import requests
r = requests.get(\'http://www.baidu.com\')
print(type(r.status_code),r.status_code)
print(type(r.headers),r.headers)
print(type(r.cookies),r.cookies)
print(type(r.history),r.history)
print(type(r.url),r.url)

 headers 属性返回 CaseInsensitiveDict 类型

 cookies 属性返回 RequestsCookieJar 类型

二、高级用法:

1.文件上传

import requests
f = {\'file\':open(\'favicon.ico\',\'rb\')}
r = requests.post(url,files=f)
print(r.text)

2.Cookies

import requests
r = requests.get(url)
print(r.cookies)
for k,v in r.cookies.items():
    print(k+"="+v)

3.会话维持

使用Session对象

import requests
s = requests.Session()
s.get(\'http://httpbin.org/cookies/set/number/123456789\')
r = s.get(\'http://httpbin.org/cookies\')
print(r.text)

4.SSL证书验证

requests提供了证书验证的功能,使用verify参数控制是否检查此证书,默认是True,会自动验证

5.代理设置

对于某些网站,在测试的时候请求几次,能正常获取信息,但是一旦大规模爬取,可能会出现验证码或直接封掉IP,导致一段时间内无法访问

代理设置:

import requests
proxy = {\'http\':\'http://ip:port\',\'https\':\'https://ip:port\'}
requests.get(\'https://www.taobao.com\',proxies=proxy)

6.超时设置

import requests
r = requests.get(\'https://www.taobao.com\',timeout=1)
print(r.status_code)

  

7.身份认证

import requests
from requests.auth import HTTPBasicAuth
r = requests.get(url,auth=HTTPBasicAuth(\'username\',\'password\'))
print(r.status_code)

# 可简写为
r = requests.get(url,auth=(\'username\',\'password\'))
print(r.status_code)
# 也提供了OAuth认证,使用 pip3 install requests_oauthlib

8.Prepared Request

将请求表示为数据结构,这个数据结构叫Prepared Request

以上是关于Python3爬虫请求库的使用requests的主要内容,如果未能解决你的问题,请参考以下文章

Python3网络爬虫——Urllib库的基本使用

Python3网络爬虫——Requests库的基本使用

python3-requests库的使用

《python3网络爬虫开发实战》--基本库的使用

python3网络爬虫学习——基本库的使用

爬虫———python