Requests库介绍:
Requests库官方的介绍有这么一句话:Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用。
这句话直接并霸气地宣示了Requests库是python最好的一个HTTP库。
Requests的简单用法
Requests库的七个主要方法
Requests.get的用法:
import requests #导入Requests库
r = requests.get(url) #使用get方法发送请求,返回包含网页数据的Response并存储到Response对象r中
Response对象的属性:
- r.status_code:http请求的返回状态,200表示连接成功(HTTP状态码)
- r.text:返回对象的文本内容
- r.content:猜测返回对象的二进制形式
- r.encoding:分析返回对象的编码方式
- r.apparent_encoding:响应内容编码方式(备选编码方式)
以知乎为例,展示上述代码的使用:
>>> import requests
>>> r = requests.get('https://www.zhihu.com/')
>>> r.status_code
500
>>> r.text #省略
>>> r.content #省略
>>> r.encoding
'ISO-8859-1'
>>> r.apparent_encoding
'ascii'
实战
分析豆瓣短评网页
首先通过浏览器工具来分析网页的加载方式。只有同步加载的数据才能直接在网页源代码中直接查看到,异步加载的数据直接查看网页源代码是看不到的。
把JavaScript由“允许”改为“阻止”,重新刷新页面,若网页正常加载,说明该网页的加载方式是同步加载,若网页没有正常加载,说明该网页的加载方式是异步加载。
使用Requests下载数据的步骤
- 导入Requests库
- 输入url
- 使用get方法
- 打印返回文本
- 抛出异常
import requests #导入Requests库
url = ' https://book.douban.com/subject/27147922/?icn=index-editionrecommend' #输入url
r = requests.get(url,timeout=20) #使用get方法
##print(r.text) #打印返回文本
print(r.raise_for_status()) #抛出异常
None
爬取网页通用框架
- 定义函数
- 设置超时
- 异常处理
- 调用函数|
#定义函数
def getHTMLText(url):
try:
r = requests.get(url,timeout=20) #设置超时
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except: #异常处理
return "产生异常"
if __name__ == '__main__':
url = " "
print(getHTMLText(url)) #调用函数
爬虫协议
什么是爬虫协议
爬虫协议,也被叫做robots协议,是为了告诉网络蜘蛛哪些页面可以抓取,哪些页面不能抓
如何查看爬虫协议
在访问网站域名后加上robots.txt即可,例如查看百度网站的爬虫协议:https://www.baidu.com/robots.txt
爬虫协议属性
拦截所有的机器人:
User-agent: *
Disallow: /
允许所有的机器人:
User-agent: *
Disallow:
爬虫建议
- 爬取互联网公开数据
- 尽量放慢你的速度
- 尽量遵循robots协议
- 不要用于商业用途
- 不要公布爬虫程序与数据