【python】第一个爬虫:用requests库爬取网页内容


requests库介绍

requests 库是一个简洁且简单的处理HTTP请求的第三方库。

requests的最大优点是程序编写过程更接近正常URL 访问过程。

 

 get()是获取网页最常用的方式,在调用requests.get()函数后,返回的网页内容会保存为一个Response 对象,其中,get()函数的参数url 必须链接采用HTTP 或HTTPS方式访问。和浏览器的交互过程一样,requests.get()代表请求过程,它返回的Response 对象代表响应。返回内容作为一个对象更便于操作,Response 对象的属性如下表所示,需要采用<a>.<b>形式使用。

status_code 属性返回请求HTTP 后的状态,在处理数据之前要先判断状态情况,如果请求未被响应,需要终止内容处理。 text 属性是请求的页面内容,以字符串形式展示。encoding 属性非常重要,它给出了返回页面内容的编码方式,可以通过对encoding 属性赋值更改编码方式,以便于处理中文字符 content 属性是页面内容的二进制形式。

json()方法能够在HTTP 响应内容中解析存在的JSON 数据,这将带来解析HTTP的便利。

 

raise_for_status()方法能在非成功响应后产生异常,即只要返回的请求状态status_code 不是200,这个方法会产生一个异常,用于try…except 语句。使用异常处理语句可以避免设置一堆复杂的if 语句,只需要在收到响应调用这个方法,就可以避开状态字200 以外的各种意外情况。

requests 会产生几种常用异常。当遇到网络问题时,如:DNS 查询失败、拒绝连接等,requests 会抛出ConnectionError 异常;遇到无效HTTP 响应时,requests 则会抛出HTTPError 异常;若请求url 超时,则抛出Timeout 异常;若请求超过了设定的最大重定向次数,则会抛出一个TooManyRedirects 异常。

用requests库访问百度网站20次,代码如下:

1 import requests
2 for i in range (20):
3     print("",i+1,"次访问")
4     r=requests.get("http://www.baidu.com")
5     r.encoding='utf-8'
6     print("返回状态:",r.status_code)
7     print(r.text)
8     print("text属性长度:",len(r.text))
9     print("content属性长度:",len(r.content))

效果图:

                


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM