您的位置: 首页 > 新闻资讯 > 正文

Pyhton requests库的使用教程

发布时间:2019-11-14 15:22:17 来源:

黑洞代理今天要给大家带来关于Python requests库的使用教程,我们会从安装开始说明,通过每个环节的配置向大家讲解,然后再经过一个实践来加深巩固。下面,让我们马上进入到教程吧。

1、 requests安装&使用

安装:

pip install requests

查看安装的包文件:

Pyhton requests库的使用教程

pip list

调试requests:

requests001.py

Pyhton requests库的使用教程

Pyhton requests库的使用教程

import requests

# resp=requests.get("http://www.sogou.com")

# resp=requests.get("http://www.sogou.com").text

resp=requests.get("http://www.sogou.com").content.decode()

print(resp)

2、添加请求头和参数

get.py

import requests

header={

"User-Agent":"Mozilla/5.0 (Windows NT 6.1; rv:65.0) Gecko/20100101 Firefox/65.0"

}

query={"query":"Python测试"}

resp=requests.get("http://www.sogou.com/web?",params=query,headers=header)

data1=resp.text # 返回一个字符串形式数据

data2=resp.content # 返回一个二进制形式的数据

print(data1.encode('GBK','ignore').decode('GBK'))

print(data2)

PS:

① 网页爬取的响应数据默认转化为Unicode编码

② print()函数需要把编码转化为GBK来处理才能显示

③ str.encode('GBK','ignore').decode('GBK'):忽略非法字符,将Unicode编码的字符串转为GBK编码,再作解码

3、处理POST请求

post.py

import requests

import re

header={

"User-Agent":"Mozilla/5.0 (Windows NT 6.1; rv:65.0) Gecko/20100101 Firefox/65.0"

}

url="http://fanyi.youdao.com/translate?smartresult:dict&smartresult:rule"

words=input("翻译词语:")

# POST请求需要提交的参数(表单数据为字典类型)

formdata={

"i":words,

"from":"AUTO",

"to":"AUTO",

"smartresult":"dict",

"client":"fanyideskweb",

"salt":"15535312968212",

"sign":"d6bd41d13ab6467bec455ff06c356b33",

"ts":"1553531296821",

"bv":"e2a78ed30c66e16a857c5b6486a1d326",

"doctype":"json",

"version":"2.1",

"keyfrom":"fanyi.web",

"action":"FY_BY_REALTlME",

"typoResult":"false"

}

# 发送POST请求,获取响应数据(字符串)

resp=requests.post(url,headers=header,data=formdata).text

# 定义正则,从响应字符串中提取翻译的内容

pat=r'"tgt":"(.*?)"'

result=re.findall(pat,resp) # 列表

# 从列表中获取翻译的有效内容

print("翻译结果:",result[0])

print("---------------------------")

print(type(resp))

print(resp)

Pyhton requests库的使用教程

4、代理IP

在urllib库中代理IP使用的大致步骤如下:

①提前准备可用的代理IP地址:proxylist=[IP1,IP2,...]

②加入到自定义代理处理器中:proxyHandler=request.ProxyHandler(proxy)

③将代理处理器加入自定义opener对象中:

opener=request.build_opener(ProxyHandler)

④创建请求对象:req=request.Request(url)

⑤发送请求,获取响应:resp=opener.open(req).read().decode()

而在requests库中代理IP的使用则进行更为简化的处理,如下:

proxy.py

import requests

# 设置代理IP地址(字典形式)

proxy={

"http":"http://211.149.172.228:9999",

"https":"https://116.196.90.181:3128",

}

url="http://www.sogou.com"

# 创建请求,传入代理参数;获取响应数据

resp=requests.get(url,proxies=proxy)

data=resp.text # 以文本形式获取响应信息

print(resp)

print(data)

5、获取响应的cookie

cookie.py

import requests

# 发送请求,获取响应

url="http://www.sogou.com"

resp=requests.get(url)

# 获取返回的cookiejar对象

cookiejar=resp.cookies

# 将cookiejar转换为字典形式

cookie=requests.utils.dict_from_cookiejar(cookiejar)

print(cookie)

6、session实现登录

cookie存在于浏览器端,本身受有效期限制,某个cookie超过有效期会退出登录

session通过登录的用户名&密码获取最新的cookie,本质上也是传递cookie实现登录,保持长期有效登录状态

案例:利用session传递cookie实现登录指定网站

分析:

input元素的属性中:name属性定义input元素的名称,用于程序调用;value属性规定input元素的值,即提交给服务器的数据

在浏览器中通过F12定位元素,获取登录的用户名和密码所对应的name属性名,分别为email、password

代码实现:

session.py

import requests

header={

"User-Agent":"Mozilla/5.0 (Windows NT 6.1; rv:65.0) Gecko/20100101 Firefox/65.0"

}

url="http://localhost/dvwa/login.php"

# 创建session对象

sess=requests.session()

# 构造登录需要的参数(从浏览器元素定位获取键的名称)

login_data={"username":"admin","password":"password"}

# 利用session对象发送POST请求(带上用户登录信息)

# 通过传递用户名&密码,获取最新的cookie信息,保持登录状态

sess.post(url,headers=header,data=login_data)

# 请求需要的页面

resp=sess.get("http://localhost/dvwa/security.php",headers=header)

data=resp.text

print(data)

7. requests库案例实践:爬取音乐资源

案例:获取某音乐站点的音乐列表,然后依次对每一首音乐进行下载到本地存储

分析:

观察音乐列表的分页url,如下:

xxx/easy-listening-music?page=1

xxx/easy-listening-music?page=2

xxx/easy-listening-music?page=3

...

分页页码规律:page=页码数字

对于每一首音乐,对应的下载链接:

音乐url:xxx/59045.html

下载url:xxx/download?id=59045

music-download.py

import requests

import re

import time

header={

"User-Agent":"Mozilla/5.0 (Windows NT 6.1; rv:65.0) Gecko/20100101 Firefox/65.0"

}

# 定义列表:存储音乐名、音乐id

musicName=[]

musicId=[]

# 音乐名称、id获取、存储

for i in range(1,2):

pageUrl="xxx?page="+str(i)

# 获取音乐列表的html网页信息

html=requests.get(pageUrl)

data=html.text

# 定义正则匹配,提取音乐Id、Name

pat1=r'href="/midi/(.*?).html"'

pat2=r'.html">(.*?)</a></strong>'

idList=re.findall(pat1,data)

nameList=re.findall(pat2,data)

# 将每个提取的数据集合到所定义的列表中存放

musicId.extend(idList)

musicName.extend(nameList)

# 音乐下载、存储

for i in range(0,len(musicId)):

mUrl="xxx/download?id="+str(musicId[i])

mName=musicName[i]

resp=requests.get(mUrl,headers=header)

data=resp.content # 音乐为字节码(二进制数据),需要用content

print("正在下载第",i+1,"首")

# 写入到本地;将每一首音乐名填充到下载的音乐mp3格式名字中

with open(r"D:\CI_Env\Python_Test\file\music\{}.mp3".format(mName),"wb") as f:

f.write(data)

time.sleep(1)

以上就是整个requests库以及代理IP在Python中的应用,希望能够帮助到大家快速上手。


相关文章内容简介

1 Pyhton requests库的使用教程

  黑洞代理今天要给大家带来关于Python∵ requests库的使用教程,我们会从安装开始说明,通过每个环节的配置向大家讲解,然后再经过一个实践来加深巩固。下面,让我们马上进入到教程吧。  1、∵requests安装&使用  安装:  pip∵install∵requests  查看安装的包文件:  pip∵list  调试requests:  requests001.py  import∵requests  #∵resp=requests.ge... [阅读全文]

最新标签