requests库介绍
requests主要方法是request
,其余方法都是reques
t的封装
方法 | 说明 |
---|---|
requests.request() | 构造一个请求,支撑以下各方法的基础 |
requests.get() | 获取html界面的主要方法,对应于http的get |
requests.head() | 获取html头部信息的方法,对应于http的head |
requests.post() | 获取html界面t提交post的方法,对应于http的post |
requests.get() | 获取html界面提交put的方法,对应于http的put |
requests.patch() | 获取html界面提交局部修改请求,对应于http的patch |
requests.delete() | 获取html界面提交删除请求,对应于http的delete |
Response对象属性
属性 | 说明 |
---|---|
r.status_code | http请求返回的状态 |
r.text | http请求响应的字符串形式 |
r.encoding | http head中猜测的响应编码方式 |
r.apparent_encoding | 从内容中分析出的响应内容编码方式 |
r.content | http响应内容的二进制格式 |
异常 | 说明 |
---|---|
requests.ConnectionError | 网络连接错误异常,如DNS查询失败,拒绝连接等 |
requests.HTTPError | HTTP错误异常 |
requests.URLRequired | URL缺失 |
requests.TooManyRedirects | 超过最大重定向次数,产生重定向异常 |
requests.ConnectionTimeout | 连接远程服务器超时异常 |
requests.URLRequired | 请求URL超时,产生超时异常 |
示例:
import requests
r=request.get(url,params=None,**kwargs)
此方法构造一个向服务器请求资源的Rquest对象,返回一个包含服务器资源的Response对象
url:拟获取页面的URL链接
params:url中的额外参数,字典或者字节流格式,可选
**kwargs:12个额外参数
爬取页面的通用代码框架
import requests
def getHTMLText(url):
try:
r=requests.get(url,timeout=30)
r.raise_for_status()#如果状态不是200,引发HTTPError异常
r.encoding=r.appraent_encoding
except:
return "产生异常"
if __name__=="__main__":
url="http://www.baidu.com"
print(getHTMLText(url))
图片爬取代码
import requests
import os
url="https://www.nationalgeographic.com/animals/2020/03/coronavirus-pandemic-fake-animal-viralsocial-media-posts/#/03-fake-animal-news-gettyimages-1207596590.jpg"
root="D://pics//"
path=root+url.split('/')[-1]
try:
if not os.path.exists(root):
os.mkdir(root)
if not os.path.exists(path):
r=requests.get(url)
with open(path,'wb') as f:
f.write(r.content)
f.close()
print("文件保存成功")
else:
print("文件已存在")
except:
print("爬取失败")
ip地址查询
import requests
url="http://m.ip138.com/ip.asp?ip="
try:
r=requests.get(url+'202.204.80.112')
r.raise_for_status()
r.encoding=r.apparent_encoding
print(r.text[-500:]
except:
print("爬取失败")
requests.request(method,url,**kwargs)
method:请求方式,对应get/put/post等7种
可选参数如下:
Robots协议
作用:告知网络爬虫哪些页面可以爬取,哪些不行
形式:在网站根目录下的robots.txt文件、
如京东的Robots协议:http:www.jd.com/robots.txt
Robots协议基本语法
#
注释,*
代表所有,/
代表根目录