zoukankan      html  css  js  c++  java
  • Python Bs4 回顾

    BeautifulSoup
    bs4主要使用find()方法和find_all()方法来搜索文档。
    find()用来搜索单一数据,find_all()用来搜索多个数据

    find_all()与find()

    name –> tag名
    string –> 内容
    recursive –>是否搜索所有子孙节点 默认为true 设为false只搜索子节点

    两方法用法相似这里以find_all()为例。

    #搜索tag名 <title></title>
    soup.find_all("title")
    
    #关于属性
    #搜索id为"link2"的标签
    soup.find_all(id='link2')
    
    #这里属性的值可以使用字符串,正则表达式 ,列表,True
    soup.find_all(id=re.compile("elsie"))
    
    #可以指定多个条件
    soup.find_all(href=re.compile("elsie"), id='link1')
    
    #对于有些不能指定的标签(data-foo)
    soup.find_all(attrs={"data-foo": "value"})
    
    #对于class -->class为python保留字使用class_
    soup.find_all(class_="top")
    #属性结束
    
    #关于string(内容)
    #基础 内容为'Elsie'的
    soup.find_all(string="Elsie")
    
    #内容在数组中的
    soup.find_all(string=["Tillie", "Elsie", "Lacie"])
    
    #内容匹配正则表达式的
    soup.find_all(string=re.compile("Dormouse"))
    
    #匹配函数
    soup.find_all(string=is_the_only_string_within_a_tag)
    #内容结束
    
    #搜索限制
    #限制搜索数量为2
    soup.find_all("a", limit=2)
    
    #只搜索直接子节点
    soup.html.find_all("a", recursive=False)
    #搜索限制结束

    简写

    soup.find_all("a")
    #等价于
    soup("a")
    soup.title.find_all(string=True)
    #等价于
    soup.title(string=True)

    CSS选择器

    Beautiful Soup支持大部分的CSS选择器
    
    #搜索tag为title
    soup.select("title")
    
    #通过tag标签逐层查找
    soup.select("html head title")
    
    #寻找直接子标签
    soup.select("head > title")
    soup.select("p > #link1")
    
    #选择所有紧接着id为link1元素之后的class为sister的元素
    soup.select("#link1 + .sister")
    
    #选择p元素之后的每一个ul元素
    soup.select("p + ul")
    
    #同时用多种CSS选择器查询元素
    soup.select("#link1,#link2")
    
    #通过查询元素属性
    soup.select('a[href="http://example.com/elsie"]')
    # [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>]
    
    soup.select('a[href^="http://example.com/"]')
    # [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>,
    #  <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>,
    #  <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]
    
    soup.select('a[href$="tillie"]')
    # [<a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]
    
    soup.select('a[href*=".com/el"]')
    # [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>]
    #通过查询元素属性结束
    
    #通过语言查找
    soup.select('p[lang|=en]')
    
    #查找第一个元素
    soup.select_one(".sister")
    

      

    find_其他

    find_parents() 和 find_parent()

    搜索当前节点的父节点

    #查找一个标签a
    a = soup("a", id="link1")
    
    #查找a的父节点中的P标签
    a_string.find_parent("p")

    find_next_siblings() 和 find_next_sibling()

    搜索当前节点后边解析的兄弟节点
    (可以理解为搜索当前标签下边的同级节点)

    find_previous_siblings() 和 find_previous_sibling()

    搜索当前节点前边解析的兄弟节点
    (可以理解为搜索当前标签上边的同级节点)

    find_all_next() 和 find_next()

    对当前节点之后的节点进行迭代

    find_all_previous() 和 find_previous()

    对当前节点之前的节点进行迭代

  • 相关阅读:
    20159320《网络攻防实践》第7周教材总结
    20159320《网络攻防实践》第7周视频总结
    20159320《网络攻防实践》第7周学习总结
    软件中反跟踪技术和软件调试
    20159320《网络攻防实践》第6周学习总结
    20159320《网络攻防实践》第6周教材总结
    20159320《网络攻防实践》第6周视频总结
    20159318 《网络攻防实践》第6周学习总结
    20159318 《网络攻击与防范》第5周学习总结
    20159318《网络攻防技术与实践》第4周学习总结
  • 原文地址:https://www.cnblogs.com/ZaraNet/p/9726572.html
Copyright © 2011-2022 走看看