介绍
这篇文章主要介绍了python爬虫之异常捕获及标签过滤的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
增加异常捕获,更容易现问题的解决方向
import ssl import urllib.request 得到bs4 import  BeautifulSoup 得到urllib.error import HTTPError URLError , , def get_data (url): ,,,headers =, {“user-agent": ,,,,,,,,,,,,,,,,,,,Mozilla/5.0, (Macintosh;, Intel Mac OS X 10 _15_7), AppleWebKit/537.36, (KHTML, like 壁虎),Chrome/90.0.4430.93 Safari/537.36“ ,,,,,,,,,,,,,,} ,,,ssl._create_default_https_context =ssl._create_unverified_context , ,,,,,, ,,,urlopen处增加两个异常捕获: ,,,,,,,,,,,1,如果页面出现错误或者服务器不存在时,会抛HTTP错误代码 ,,,,,,,,,,,2,如果网址写错了或者是链接打不开时,会抛URLError错误 ,,,,,, ,,,试一试: ,,,,,,,url_obj =, urllib.request.Request (url,头=标题) ,,,,,,,response =, urllib.request.urlopen (url_obj) ,,,,,,,html =, response.read () .decode (& # 39; use utf8 # 39;) ,,,except (HTTPError, URLError) as e: ,,,,,,,raise e , ,,,,,, ,,,BeautifulSoup处增加异常捕获是因为BeautifulSoup对象中有时候标签实际不存在时,会返回没有值; ,,,因为不知道,所以调用了就会导致抛出AttributeError:, & # 39; NoneType& # 39; object has no xxxxxxx。 ,,,,,, ,,,试一试: ,,,,,,,bs =, BeautifulSoup (html、,“html.parser") ,,,,,,,results =, bs.body ,,,except AttributeError as e: ,,,,,,,return 没有 , ,,,return 结果 , , if __name__ ==, & # 39; __main__ # 39;: ,,,print (get_data (“https://movie.douban.com/chart"))
解析html,更好的实现数据展示效果
- <李>
get_text():获取文本信息
李>#,此处代码同上面打开url代码一致,故此处省略…… , 时间=html response.read () .decode (& # 39; use utf8 # 39;) 时间=bs BeautifulSoup (html、,“html.parser") 时间=data bs.find(& # 39;跨度# 39;,,{& # 39;类# 39;:,& # 39;pl # 39;}) print (f # 39;电影评价数:{数据}& # 39;) print (f # 39;电影评价数:{data.get_text ()} & # 39;)
运行后的结果显示如下:
电影评价数:& lt; span 类=皃l"祝辞(38054人评价)& lt;/span> 电影评价数:(38054人评价)
- <李>
找到()方法是过滤HTML标签,查找需要的单个标签
李>
实际找到方法封装是调用了正则find_all方法,把find_all中的limt参数传1,获取单个标签
1.名称:可直接理解为标签元素
2. attrs:字典格式,放属性和属性值,{“class":“indent"}
3.递归:递归参数,布尔值,为真时递归查询子标签
4.文本:标签的文本内容匹配,是标签的文,本标签的文本
- <李>
find_all()方法是过滤HTML标签,查找需要的标签组
李>使用方法适合找到一样的,无非就是多了个限制参数(筛选数据)
必须注意的小知识点:
#,,,下面两种写法,实际是一样的功能,都是查询id为文本的属性值 bs.find_all (id=皌ext") bs.find_all (& # 39;, & # 39;,, {“id":“text"})
#,,,如果是类的就不能类=皒 x x"了,因为类是python中类的关键字 bs.find_all (class_=皌ext") bs.find_all (& # 39;, & # 39;,, {“class":“text"})
python有哪些常用库
python常用的库:1. requesuts; 2. scrapy; 3.枕头;4.扭曲;5. numpy; 6. matplotlib; 7. pygama; 8。ipyhton等。
感谢你能够认真阅读完这篇文章,希望小编分享的“python爬虫之异常捕获及标签过滤的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!