python爬虫之异常捕获及标签过滤的示例分析

  介绍

这篇文章主要介绍了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标签,查找需要的单个标签

 python爬虫之异常捕获及标签过滤的示例分析

实际找到方法封装是调用了正则find_all方法,把find_all中的limt参数传1,获取单个标签

1.名称:可直接理解为标签元素

2. attrs:字典格式,放属性和属性值,{“class":“indent"}

3.递归:递归参数,布尔值,为真时递归查询子标签

4.文本:标签的文本内容匹配,是标签的文,本标签的文本

<李>

find_all()方法是过滤HTML标签,查找需要的标签组

使用方法适合找到一样的,无非就是多了个限制参数(筛选数据)

 python爬虫之异常捕获及标签过滤的示例分析

必须注意的小知识点:

#,,,下面两种写法,实际是一样的功能,都是查询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爬虫之异常捕获及标签过滤的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

python爬虫之异常捕获及标签过滤的示例分析