requests

作者: wit92 | 来源:发表于2020-06-14 17:31 被阅读0次

1.requests简介

1.1 requests模块简介

  • Requests库是现在目前公认的爬取网页资源最好的第三方库,相比于urllib它更加的人性化,符合人的思维逻辑。

1.2 requests模块加载办法

  • 在电脑上单击开始--运行--输入cmd--回车,弹出一个黑色界面。

Windows 命令提示符(cmd.exe)是 Windows NT 下的一个用于运行 Windows 控制面板程序或某些 DOS 程序的shell程序;或在 Windows CE 下只用于运行控制面板程序的外壳程序。

  • 输入 pip install requests
  • 如果报错,升级一下pip工具,pip install --upgrade pip

1.3 简单用法

import requests
response=requests.get("http://wwww.baidu.com").content.decode()
print(response)
  • content返回的是二进制形式的网页数据,text返回字符串形式的网页数据。

1.4 将get请求和请求头传入请求中

import requests

headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}
wd={"wd":"大山"}
response=requests.get("http://www.baidu.com/s?",params=wd,headers=headers)
data=response.text 
data2=response.content 
print(data2.decode())

只需要将get请求以params参数传入请求即可,不需要urllib.parse.urlencode(wd),然后拼接完整的url再传入请求中.

2. 代理ip

2.1 代理IP简单回顾

反爬虫机制2,如果一直用同一个ip进行爬虫,反扒机制将禁止,所以通过伪装ip以及其他信息来访问网站。

ip 我们在日常生活中,还是比较熟悉的,简单来说每台电脑都有一个ip地址,用户通过ip地址访问网站。

2.2 代理IP在requests中的用法

import requests
#不同于urllib模块,将代理IP存入字典形式,而urllib则是存入[{"http":"59.62.164.212:9999"}]列表形式
proxy={
"http":"http://119.101.112.203:9999",
"http":"http://112.85.129.189:9999",
"https":"https://120.83.110.179:9999",
}

response=requests.get("http://www.baidu.com",proxies=proxy)

print(response.content.decode())

2.3 代理IP在urllib中的用法

#使用代理ip
import random
from urllib import request
proxylist=[
    {"http":"59.62.164.212:9999"},
    {"http":"183.47.2.201:30278"}
]
#随机取值
proxy=random.choice(proxylist)
print(proxy)
#构建代理处理器对象
proxyHandler=request.ProxyHandler(proxy)
#处理代理请求
#创建自定义的opener
opener=request.build_opener(proxyHandler)
#创建请求对象
req=request.Request("http://www.baidu.com")
res=opener.open(req)
print(res.read())

通过对比可以看出requests包的优势与人性化,urllib在处理代理IP时,需要先创建处理器对象,然后创建自定义的opener,如果想用request.urlopen()方法,还需要request.install_opener(opener)将opener设置为全局,才能使用。

而requests模块仅仅在requests.get()中加入一个参数proxies=proxy即可。

3. cookiejar

3.1

cookiejar简单来说就是获取响应的cookie,cookie是存储在浏览器的一些信息,包括用户的登陆信息和一些操作,我们从服务器中获取的响应信息中,有时候也会包含一些cookie信息。了解一点为了应对不时之需。

import requests
response=requests.get("http://www.baidu.com")
#获取返回的cookiejar对象,由于返回的值比较难以处理所以将cookiejar转换成字典形式
cookiejar=response.cookies
print(cookiejar)
#将cookiejar转换为字典形式的数据
dict1=requests.utils.dict_from_cookiejar(cookiejar)
print(dict1)
  • 返回结果
<RequestsCookieJar[<Cookie BDORZ=27315 for .baidu.com/>]>
{'BDORZ': '27315'}

3.2 使用RequestsCookieJar自动保存并传递cookie

使用python的requests开发爬虫程序的时候,经常需要将之前请求返回的cookie值作为下一个请求的cookie进行调用,比如模拟登录之后的返回的sessionID,就是需要作为后续请求的cookie参数

分成三步走:

  1. 通过requests模块导入 from requests.cookies import RequestsCookieJar

  2. 进行实例化:jar = RequestsCookieJar()

  3. 进行设置: jar.set(cookie['name'], cookie['value'])

完成之后就可以在直接在请求网页源文件的时候,将这个cookie带上一起发送请求了

这个是用在模拟登录的时候用到的,当我使用pyppeteer模拟登录的时候,获取到的cookie是一个列表,所以这时候,就需要进行转换了

4. session

4.1 session

session与cookie类似,都是一种缓存机制,不同的是cookie存储在服务器中,session存在于服务端,cookie登录存在一个有效期,而session登录是传入用户名、密码,每次登陆都传入最新的cookie。

4.2 网页简单分析

人人网.png

相关文章

网友评论

    本文标题:requests

    本文链接:https://www.haomeiwen.com/subject/dhkxxktx.html