zl程序教程

您现在的位置是:首页 >  工具

当前栏目

bs4 beautifulsoup学习笔记

笔记学习 BeautifulSoup
2023-09-27 14:27:29 时间

“”"
TODO

# 用requests库获取网页html
r = requests.get("https://python123.io/ws/demo.html")
demo = r.text

“”"

  1. 对demo进行html的解析

    soup =BeautifulSoup(demo, "html.parser")
    
  2. 格式化html打印出来

    print(print(soup.prettify()))
    
  3. 打印title标签

    print(soup.title)
    
  4. 打印内容的第一个a标签

    print(soup.a)
    
  5. 打印a标签的属性

    print(soup.a.attrs)
    
  6. 打印a标签的text内容

    print(soup.a.string)
    
  7. 打印a标签的具体href连接属性

    print(soup.a.attrs['href'])
    
  8. 打印a标签的名字,就是a

    print(soup.a.name)
    
  9. 打印a标签的父标签名称

    print(soup.a.parent.name)
    
  10. 获取a的父亲的父亲标签

    print(soup.a.parent.parent.name)
    
  11. 获取head的子节点

    print(soup.head.contents)
    
  12. 遍历子节点

     for child in soup.body.children:
    	 print(child)
    
  13. 遍历子孙节点soup.body.descendants:

    """
    .patent   获取节点的父标签
    .parents  获取节点的所有父节点
    """

    for parent in soup.a.parents:
        if parent is None:
             print(parent)
        else:
             print(parent.name)
  1. 获取a标签的后一个平行标签,中间的字符也会算为平行标签

    print(soup.a.next_sibling)
    
  2. 获取a标签的后一个平行标签的后一个平行标签

    print(soup.a.next_sibling.next_sibling)
    
  3. 获取a标签的前一个平行标签,中间的字符也会算为平行标签

    print(soup.a.previous_sibling)
    
    """
    .next_siblings      遍历后续所有平行节点
    .previous_siblings  遍历前续所有平行节点
    """

    for sibings in soup.a.next_siblings:
        print(sibings)
  1. 获取内容的所有a标签

    soup.find_all("a")
    
    # 打印a中href属性
    for link soup.find_all("a"):
        print(link.get('href'))
    
  2. 获取所有ab标签

    soup.find_all(['a','b'])
    
  3. 获取p标签class包含xxx属性的标签

    soup.find_add('p', 'xxx')
    
  4. 获取所有标签

    soup.find_all(True)
    
  5. 寻找标签名包含b字符的所有标签

    soup.find_all(re.compile('b'))
    
  6. 按固定id值寻找标签

    soup.find_all(id='xxx')
    
  7. 按id值存在xx字符寻找标签

    soup.find_all(id=re.compile('xxx'))
    
  8. recursive值,是否对子孙全部检索,默认True

    soup.find_all('a', recursive = False)
    设置为false后,只对子节点进行检索
    
  9. string检索是否存在text为xxx的标签

    soup.find_all(string = "xxx")
    
  10. string检索是否存在text包含xxx的标签

    soup.find_all(string = re.compile("xxx"))