- 安装requests库:win+R输入cmd打开命令行
C:\Users\QCupin>pip install requests
- 打开python 的IDLE环境,导包测试
>>>import requests
>>>r=requests.get("http://www.baidu.com")
>>>type(r)
<class 'requests.models.Response'>
>>>r.status_code #状态码,200说明访问成功
200
>>>r.encoding='utf-8' #设置编码格式
>>>r.text #显示网页内容
- Requests库的get()方法
构造一个向服务器请求资源的requests对象,返回一个包含服务器资源的Response对象
属性 | 说明 |
---|---|
r.apparent_encoding | 从内容中分析出的相应内容编码方式 |
r.content | HTTP响应内容的二进制形式 |
- 爬取网页的通用代码框架
网络连接有风险,requests.get(url)并不是一定成立的,需要异常处理
import requests
def getHTMLText(url):
try:
r=requests.get(url,timeout=30)
r.raise_for_status() #如果状态不是200,引发HTTPError异常
r.encoding=r.apparent_encoding
return r.text
except:
return "产生异常"
if __name__=="__main__":
url="http://www.baidu.com"
print(getHTMLText(url))
- HTTP协议及Requests库方法
HTTP:Hypertext Transfer Protocol
超文本传输协议,基于”请求和响应“,无状态的应用层协议
采用url作为定位网络资源的标识
get、head、put、post、patch、delete
put和patch的区别:
假设url位置有一组数据UserInfo,包括Username在内的20个字段,用户修改了Username
—使用PATCH:仅向URL提交UserName的局部更新请求
—使用PUT:必须将20个字段一并提交(否则会覆盖)
- 网络爬虫存在的问题
网络爬虫可能具备突破简单访问控制的能力,获得被保护数据从而泄露个人隐私
三类:
爬取网页(小规模)-Requests库 >=90%
爬取网站(中规模)-Scrapy库
爬取全网(大规模)-定义开发
网络爬虫的限制:
①来源审查:判断User-Agent进行限制,只响应浏览器或者友好爬虫的访问
②发布公告:Robots协议(可以不遵守,但要承担法律风险)
- Robots协议
在网站根目录下放置一个robots.txt文件,例如:https://www.baidu.com/robots.txt