BeautifulSoup库查找定位元素+正则表达式+lambda初步认识理解

本文介绍了使用BeautifulSoup库查找HTML元素的基本方法,包括select()、find()、findAll(),并探讨了正则表达式的常规操作符、re库函数及match对象。同时,文章强调了异常处理和虚拟环境在Python项目中的重要性。
摘要由CSDN通过智能技术生成

🏐导读

  • 🎈创建虚拟环境易于保存
    • 创建虚拟环境的原因及方法
  • 🎈异常补充
    • PART Ⅰ >>> 获得HTML过程中可能遇到的异常
      • 网页在服务器上不存在
      • 服务器不存在
    • PART Ⅱ >>> 在查找标签时遇到的异常
      • 该标签不存在时 >>> 返回None类型 >>> 即是仍然会获得,不会报错
      • 再查找该标签的子标签时 >>> 报错
    • 使程序易于捕捉异常
  • 🎈优美地查找元素
    • 🎏查找元素的bs4基本方法
      • 🎐select()
        • 🎱补充关于css中div > p的疑惑
      • 🎐find() / findAll()
    • 🎏 来遍历吧 ——导航树
      • 🎐下行遍历
        • .contents
        • .children
        • .descendants
      • 🎐上行遍历
        • .parent
        • .parents
      • 🎐平行遍历
        • .next_sibling
        • .previous_sibling
        • .next_siblings
        • .previous_siblings
  • 🎈信息查找
    • 🎏信息标记形式
      • XML
      • JSON
      • YAML
    • 🎏正则表达式
      • 🎐常规操作符
      • 🎐re库基本函数介绍
      • 🎐re库面向对象写法
      • 🎐re库的match对象
    • 🎏 Lambda

🎈创建虚拟环境易于保存

创建一个虚拟环境,在里面安装库文件,可以不用担心某个项目及其关联的库文件冲突;并且当要发送给别人的时候可以轻松打包整个环境,只要python版本相同,就可以直接在虚拟环境运行,而不需要再装库。
🎱补充虚拟与正常安装区别: 我们平时直接pip install 某python库实际上是全局安装它,这通常需要有管理员权限或者以root身份安装,这个库文件对设备上的每一个用户和每一个项目都是存在的。
👇虚拟环境如何安装?
首先需要pip install virtualenv
然后virtualenv envriment-name
接着需要激活它

> cd enviroment-name
> source bin/activate  

激活后,会发现环境名称出现在命令提示符前面,提示你现在在虚拟环境中。然后该怎么操作怎么操作即可。
当不再用时,通过释放命令来退出环境

> deactivate  

🎈异常补充

我们应该有着一个易于捕捉异常又容易与阅读的程序代码,还应该希望能够很大程度上重用代码,所以要写像getSiteHTML这种通用函数,更是要有着周密的异常处理功能。

PART Ⅰ >> 获得 HTML

from urllib.requst import urlopen
from urllib.error import HTTPError
r = urlopen(url)

可能出现的异常

  • 网页在服务器上不存在(或者获取页面时出现错误)

  • 服务器不存在
    第一种异常出现时,程序会返回HTTP错误。HTTP错误可能是"404 Page Not Found" "500 Internal Server Error"等。所有类似情形函数都会抛出"HTTPError"异常。我们可以用以下方式处理👇

      try:
          r = urlopen(url)
      except HTTPError as e:
          print(e) 
    

如果程序返回HTTP错误代码,程序就会出现错误内容。

如果服务器不存在——链接打不开/url连接写错了,就会返回一个None对象,由此我们可以再增加一个判断是不是none

if r is None:
    print("URL is not found")
else:
    # 程序继续的代码  

PART Ⅱ >> bs解析过程

  • 标签对象不存在 >>> 返回None对象

  • None对象的子标签 >>> AttributeError错误

      from urllib.request import urlopen 
      from urllib.error import HTTPError 
      from bs4 import BeautifulSoup
          def getHTML_title(url):
              try:
                  html = urlopen(url)
              except HTTPError as e:
                  return None
              try:
                  obj = bs4.BeautifulSoup(html.read())
                  title = obj.body.h1
              except AttributeError as e:
                  return None
              return title
          title = getHTML_title(url)
          if title == None:
          # PART Ⅰ异常中的第二种/其他中全是None时。
              print("title could not found")
          else:
              print(title)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值