requests库
requests库的7个主要方法
方法 | 说明 |
---|---|
requests.request() | 构建一个请求,支撑以下各个方法的基础方法 |
requests.get() | 获取HTML网页的主要方法,对应于HTTP的GET |
requests.head() | 获取HTML网页头信息的方法,对应于HTTP的HEAD |
requests.post() | 向HTML网页提交POST请求的方法,对应于HTTP的POST |
requests.put() | 向HTML网页提交PUT请求的方法,对应于HTTP的PUT |
requests.patch() | 向HTML网页提交局部修改请求,对应于HTTP的PATCH |
requests.delete() | 向HTML页面提交删除请求,对应于HTTP的DELETE |
requests的两个主要对象
Request:向服务器请求资源的request对象
Response:包含服务器资源的response对象
r = requests.get(url) 向URL服务器请求资源,返回一个包含服务器资源的response对象
response的属性
status_code:HTTP请求返回的状态,200表示连接成功,404表示连接失败
encoding:从HTTP header中猜测的响应编码方式
apparent_encoding:从HTTP 响应内容分析的可能的编码方式
text:HTTP 响应内容
content:HTTP 响应内容的二进制形式
网络爬虫的限制:
- 来源审查:判断user-agent进行限制
检查来访HTTP协议头的user-agent域,只响应浏览器和有好爬虫的访问 - 发布公告:Robots协议
告知所有爬虫网站的爬取策略,要求爬虫遵守
robots协议 一般在网站根目录下的robots.txt文件
绕过来源审查:给headers赋值,模拟浏览器访问
一、获取HTML
import requests
def getHTMLText(url):
try:
header = {'user-agent' : 'Mozilla/5.0'}
r = requests.get(url, headers=header)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return "访问错误"
if __name__ == "__main__":
url = "https://baike.baidu.com/item/Python/407313?fr=aladdin"
print(getHTMLText(url))
二、百度搜索关键字提交
def func(url, kw):
try:
header = {'user-agent' : 'Mozilla/5.0'}
r = requests.get(url, data = kw, headers = header)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text[-500:]
except:
return "访问出错"
if __name__ == "__main__":
url = "http://www.baidu.com/s?"
kw = {"wd" : "python"}
print(func(url, kw))
三、网络图片的爬取与存储
import requests
def getHTMLText(url):
try:
kv = {'user-agent' : 'Mozilla/5.0'}
r = requests.get(url, headers = kv)
r.raise_for_status()
r.encoding = r.apparent_encoding
path = "G:/abc.jpg"
with open(path, "wb") as f:
f.write(r.content)
return r.text
except:
return "访问异常"
if __name__ == "__main__":
url = "https://edu-image.nosdn.127.net/3310f128e53b406f94400f7ae6046db2.png?imageView&quality=100"
print(getHTMLText(url))