Python网络爬虫与信息提取-Day1-requests库(1)
来源:互联网 发布:js如何设置按钮 编辑:程序博客网 时间:2024/06/08 16:09
Request库的安装方法
首先用管理员权限启用command控制台
然后安装request库
pip install requests
测试一下request库的安装效果
import requestsr = requests.get(“http://www.baidu.com”)r.status_code
>>>状态码是200,表示访问成功
更改网页编码为utf-8编码,打印网页内容
r.encoding = ‘utf-8’r.text
requests库有7个主要方法
requests.get方法
获得一个网页的最简单的一行代码就是
r = requests.get(url)
这里面我们通过get方法和url来构造一个向服务器请求资源的Request对象
requests.get函数返回的内容是一个Response对象,用变量r来表示
Response对象包含了从服务器返回的所有相关资源
requests.get函数的完整使用方法有三个参数
requests.get(url, params=None, **kwargs)
·url : 拟获取页面的url链接
·params : url中的额外参数,字典或字节流格式,可选
·**kwargs: 12个控制访问的参数
在r = requests.get(url)这行代码中,最重要的是Request和Response这两个对象,而获得网络内容的Response对象又是重中之重,它包含爬虫返回的内容
在Response对象中,最常用的是如下五个属性,它们是访问网页最常用也是最必要的属性
(1)r.status_code
HTTP请求的返回状态,200表示连接成功,404表示失败
(2)r.text
HTTP响应内容的字符串形式,即,url对应的页面内容
(3)r.encoding
从HTTP header中猜测的响应内容编码方式
(4)r.apparent_encoding
从内容中分析出的响应内容编码方式(备选编码方式)
(5)r.content
HTTP响应内容的二进制形式
比如:我们从一个url链接上获得一个图片,这个图片里的资源是以二进制形式存储的,那我就可以用r.content来还原这个图片
在使用get方法获得网络资源的时候,有如下的基本流程
先用r.status_code来检查状态,如果是200,则可以用r.text,r.encoding,r.apparent_encoding,r.content去解析访问的内容;如果返回的状态码是404或者是其他,则说明这次访问因某些原因出错,将产生异常
理解Response编码
r.encoding是从HTTP header中猜测的响应内容编码方式
r.apparent_encoding是从内容中分析出的响应内容编码方式(备选编码方式)
r.encoding:如果header中不存在charset,则认为编码为ISO‐8859‐1
r.text根据r.encoding显示网页内容
r.apparent_encoding:根据网页内容分析出的编码方式可以看作是r.encoding的备选
爬取网页的通用代码框架
一组可以准确地可靠地爬取网页内容的代码
r = requests.get(url)并不是一定成立的
因为网络连接有风险,所以这样的语句它的异常处理十分重要
Requests库支持6种常用的连结异常
(1)requests.ConnectionError 网络连接错误异常,如DNS查询失败、拒绝连接等
(2)requests.HTTPError HTTP错误异常
(3)requests.URLRequired URL缺失异常
(4)equests.TooManyRedirects 超过最大重定向次数,产生重定向异常
(5)requests.ConnectTimeout 连接远程服务器超时异常
(6)requests.Timeout 请求URL超时,产生超时
Response异常,Response提供了一个方法
r.raise_for_status() 如果不是200,产生异常requests.HTTPError
r.raise_for_status()在方法内部判断r.status_code是否等于200,不需要增加额外的if语句,该语句便于利用try‐except进行异常处理
爬取网页的通用代码框架
import requestsdef getHTMLText(url):try:r = requests.get(url, timeout=30)r.raise_for_status() #如果状态不是200,则引发HTTPError异常r.encoding = r.apparent_encodingreturn r.textexcept:return "产生异常"if __name__ == "__main__":url = "http://www.baidu.com"print(getHTMLText(url))
通用代码框架使得爬取网页更有效、更稳定、更可靠
- Python网络爬虫与信息提取-Day1-requests库(1)
- Python网络爬虫与信息提取(一) requests库
- Python网络爬虫与信息提取-Day2-requests库(2)
- Python网络爬虫与信息提取-Day3-requests库(3)
- Python网络爬虫与信息提取-Day5-Requests库网络爬取实战
- Python 网络爬虫与信息获取(一)—— requests 库的网络爬虫
- Python网络爬虫与信息提取(一)
- Python网络爬虫与信息提取-Day6-Beautiful Soup库
- Python网络爬虫与信息提取(二) BeautifulSoup库
- 【MOOC】Python网络爬虫与信息提取-北京理工大学-part 1
- Python网络爬虫与信息提取(中国大学mooc)
- [mooc]python网络爬虫与信息提取(实例一)
- Python网络爬虫与信息提取(一)
- Python网络爬虫与信息提取 网络爬虫之规则
- MOOC-Python网络爬虫与信息提取-第二周 BeautifulSoup库入门与信息提取方法
- Python网络爬虫与信息提取-Day12-Re(正则表达式)库入门
- Python网络爬虫与信息提取-Day10-(实例)中国大学排名定向爬虫
- Python网络爬虫与信息提取-Day13-(实例)淘宝商品比价定向爬虫
- Linux学习之路-程序控制结构
- TensorFlow指定特定GPU以及占用显存的比例
- centos 6下搭建网站
- 单链表的归并排序
- <8/22>集训日记
- Python网络爬虫与信息提取-Day1-requests库(1)
- HDU1269 迷宫城堡 强联通分量Tarjan算法
- hdu 6161 Big binary tree
- 51Nod
- Python求水仙花数
- 简单理解Python中的类对象、实例对象、属性、方法
- JAVA基础---简易自动售货机
- JSP通过脚本、表达式打印九九乘法表
- Python实现简单学生管理