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)