python爬虫之异常捕获及标签过滤详解

 更新时间:2021年05月17日 16:39:09   作者:一名小测试  
今天带大家了解python异常捕获及标签过滤,文中有非常详细的代码示例,对正在学习python爬虫的小伙伴们很有帮助,需要的朋友可以参考下

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

import ssl
import urllib.request
from bs4 import BeautifulSoup
from 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 Gecko) Chrome/90.0.4430.93 Safari/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)as e:
        raise e
 
    """
    BeautifulSoup处增加异常捕获是因为BeautifulSoup对象中有时候标签实际不存在时,会返回None值;
    因为不知道,所以调用了就会导致抛出AttributeError: 'NoneType' object has no xxxxxxx。
    """
    try:
        bs = BeautifulSoup(html, "html.parser")
        results = bs.body 
    except AttributeError as e:
        return None
 
    return results
 
 
if __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()}')

运行后的结果显示如下:

电影评价数:<span class="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="x x x"了,因为class是python中类的关键字
bs.find_all(class_="text")
bs.find_all(' ', {"class": "text"})

到此这篇关于python爬虫之异常捕获及标签过滤详解的文章就介绍到这了,更多相关python异常捕获及标签过滤内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • pycharm上的python虚拟环境移到离线机器上的方法步骤

    pycharm上的python虚拟环境移到离线机器上的方法步骤

    本人在工作中需要在离线Windows环境中使用,本文主要介绍了pycharm上的python虚拟环境移到离线机器上的方法步骤,具有一定的参考价值,感兴趣的可以了解一下
    2021-10-10
  • python适合做数据挖掘吗

    python适合做数据挖掘吗

    在本篇文章里小编给各位分享的是一篇关于python做数据挖掘的相关知识点内容,有兴趣的朋友们可以学习下。
    2020-06-06
  • 如何通过一篇文章了解Python中的生成器

    如何通过一篇文章了解Python中的生成器

    生成器指的是生成器对象,可以由生成器表达式得到,也可以使用yield关键字得到一个生成器函数,调用这个函数得到一个生成器对象,下面这篇文章主要给大家介绍了关于Python中生成器的相关资料,需要的朋友可以参考下
    2022-04-04
  • python爬虫看看虎牙女主播中谁最“顶”步骤详解

    python爬虫看看虎牙女主播中谁最“顶”步骤详解

    这篇文章主要介绍了python爬虫看看虎牙女主播中谁最“顶”,本文分步骤通过图文实例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Python中Collections模块的Counter容器类使用教程

    Python中Collections模块的Counter容器类使用教程

    Counter是Python标准库提供的一个非常有用的容器,可以用来对序列中出现的各个元素进行计数,下面就来一起看一下Python中Collections模块的Counter容器类使用教程
    2016-05-05
  • python绘图pyecharts+pandas的使用详解

    python绘图pyecharts+pandas的使用详解

    这篇文章主要介绍了python绘图pyecharts+pandas的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • python的pstuil模块使用方法总结

    python的pstuil模块使用方法总结

    这篇文章主要介绍了python的pstuil模块使用方法总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • python计算牛顿迭代多项式实例分析

    python计算牛顿迭代多项式实例分析

    这篇文章主要介绍了python计算牛顿迭代多项式的方法,涉及Python数学运算的相关技巧,需要的朋友可以参考下
    2015-05-05
  • python3 selenium自动化 下拉框定位的例子

    python3 selenium自动化 下拉框定位的例子

    今天小编就为大家分享一篇python3 selenium自动化 下拉框定位的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • 使用Python加密和解密PDF文件

    使用Python加密和解密PDF文件

    在日常工作和生活中,保护PDF文件的隐私和安全至关重要,Python提供了一些强大的库,使得加密和解密PDF文件变得相对简单,本文将详细介绍如何使用PyPDF2库来加密和解密PDF文件,需要的朋友可以参考下
    2025-03-03

最新评论