• 基于BeautifulSoup库的HTML内容的查找


    一、BeautifulSoup库提供了一个检索的参数:

    <>.find_all(name,attrs,recursive,string,**kwargs),它返回一个列表类型,存储查找的结果。它的一些对应的简写形式是:

      <tag>(...) <=> <tag>.find_all(...)

      soup.(...) <=> soup.find_all(...)

    •name:按照标签名称进行检索,可以同时对多个标签名称同时检索

    •attr:按照标签的属性进行检索,可以标注为属性检索

    •recursive:是否对子孙全部检索,默认为True

    •string:对标签中字符串区域进行检索,<>...string...</>

     1 import requests
     2 from bs4 import BeautifulSoup
     3 import re
     4 
     5 r = requests.get('http://python123.io/ws/demo.html')
     6 r.raise_for_status()
     7 r.encoding = r.apparent_encoding
     8 demo = r.text
     9 soup = BeautifulSoup(demo,"html.parser")
    10 
    11 print(soup.find_all('a'))#按照name进行检索
    12 print(soup.find_all(['a','b']))#同时对多个name标签进行检索
    13 for tag in soup.find_all(re.compile('b')):#对以b开头的所有标签进行检索
    14     print(tag.name)
    15     print(tag)
    16 
    17 print("")
    18 print(soup.find_all('p','course'))#按照标签里面的属性值进行检索
    19 print(soup.find_all(id='link1'))#按照指定的属性的属性值进行检索,严格匹配
    20 print(soup.find_all(id = re.compile('link')))#特定属性值的不严格匹配
    21 
    22 print("")
    23 print(soup.find_all('a',recursive = False))#不对所有子孙检索,只检索儿子节点,起点是html标签,如果返回的是空列表[],就代表a标签是在儿子标签之后的标签里面
    24 
    25 print(soup.find_all(string = 'Basic Python'))#检索字符串,严格匹配
    26 print(soup.find_all(string = re.compile('Python')))#不严格匹配

    二、<>find_all(..)的扩展方法

    方法 说明
    <>.find() 搜索,只返回一个结果,字符串类型,同.find_all()参数
    <>.find_parent() 在先辈中搜索,只返回一个结果,返回字符串类型,同.find()参数
    <>.find_parents() 在先辈中搜索,返回列表类型,同.find_all()参数
    <>.find_next_sibling() 在后续平行节点中搜索,只返回一个结果,返回字符串类型,同.find()参数
    <>.find_next_siblings() 在后续平行节点中搜索,返回一个列表类型,同.find_all()参数
    <>.find_previous_sibling() 在前续平行节点中搜索,只返回一个结果,返回字符串类型,同参.find()数
    <>.find_previous_siblings() 在前续平行节点中搜索,返回一个列表类型,同.find_all()参数
  • 相关阅读:
    第一课 GCC入门
    第二课客户端链接Linux系统
    2014目标!!!!
    第一课Linux系统安装知识(2)
    android开发系列之ContentObserver
    android开发系列之数据存储
    android开发系列之视频断点续传
    稻盛和夫系列之活法一
    android开发系列之使用xml自定义控件
    android开发系列之MVP设计模式
  • 原文地址:https://www.cnblogs.com/BASE64/p/10291304.html
Copyright © 2020-2023  润新知