这篇文章主要介绍了python爬虫中异常捕获及标签过滤的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python爬虫中异常捕获及标签过滤的方法文章都会有所收获,下面我们一起来看看吧。

增加异常捕获,更容易现问题的解决方向

importsslimporturllib.requestfrombs4importBeautifulSoupfromurllib.errorimportHTTPError,URLErrordefget_data(url):headers={"user-agent":"Mozilla/5.0(Macintosh;IntelMacOSX10_15_7)AppleWebKit/537.36(KHTML,likeGecko)Chrome/90.0.4430.93Safari/537.36"}ssl._create_default_https_context=ssl._create_unverified_context"""urlopen处增加两个异常捕获:1、如果页面出现错误或者服务器不存在时,会抛HTTP错误代码2、如果url写错了或者是链接打不开时,会抛URLError错误"""try:url_obj=urllib.request.Request(url,headers=headers)response=urllib.request.urlopen(url_obj)html=response.read().decode('utf8')except(HTTPError,URLError)ase:raisee"""BeautifulSoup处增加异常捕获是因为BeautifulSoup对象中有时候标签实际不存在时,会返回None值;因为不知道,所以调用了就会导致抛出AttributeError:'NoneType'objecthasnoxxxxxxx。"""try:bs=BeautifulSoup(html,"html.parser")results=bs.bodyexceptAttributeErrorase:returnNonereturnresultsif__name__=='__main__':print(get_data("https://movie.douban.com/chart"))

解析html,更好的实现数据展示效果

get_text():获取文本信息

#此处代码同上面打开url代码一致,故此处省略......html=response.read().decode('utf8')bs=BeautifulSoup(html,"html.parser")data=bs.find('span',{'class':'pl'})print(f'电影评价数:{data}')print(f'电影评价数:{data.get_text()}')

运行后的结果显示如下:

电影评价数:<spanclass="pl">(38054人评价)</span>电影评价数:(38054人评价)

find() 方法是过滤HTML标签,查找需要的单个标签

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

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

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

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

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

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

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

必须注意的小知识点:

#下面两种写法,实际是一样的功能,都是查询id为text的属性值bs.find_all(id="text")bs.find_all('',{"id":"text"})

#如果是class的就不能class="xxx"了,因为class是python中类的关键字bs.find_all(class_="text")bs.find_all('',{"class":"text"})

关于“python爬虫中异常捕获及标签过滤的方法”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“python爬虫中异常捕获及标签过滤的方法”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。