beautifulsoup用法2 (find_all select)


from bs4 import BeautifulSoup

html = """
     <html>
        <head><title>標題</title></head>
        <body>
            <p class="story" name="dromouse">從前有三個小姐妹,她們的名字是
            <a href="http://example.com/elsie" class="sister" id="link1"><!--Elseie--></a>,
            <a href="http://example.com/lacie" class="sister" id="link2"><b>Lacie</b></a>,
            <a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
            她們生活在一個井的下面</p>
            <p class="story">...</p>
        </body>
     </html>
"""
# find_all方法 傳入參數   屬性="..." , name=標簽名 class加_因為是關鍵詞
soup = BeautifulSoup(html, 'lxml')
# for a in soup.find_all(name='a'):
#     print(a)
# for a in soup.find_all(class_='sister'):
#     print(a)
# 使用attrs  text匹配文本 例如 text="Lacie" 也可以傳入正則表達式
# for a in soup.find_all(attrs={'class': 'sister'}):
#     print(a)
# ######################################find方法#######################################################
# 返回單個 用法同上
# print(soup.find(name="p"))
# 祖先parents  唯一父元素parent 只能先指定一個元素來進行查找 元組不行
# print(soup.find_all(name='a').find_parent(name="p"))# 這不可行
# print(soup.find(name='a').find_parent(name="p"))
# print(soup.find(name='a').find_parents())
# 前一個兄弟節點  后一個兄弟節點
print(soup.find(name='a').find_next_sibling())
print(soup.find(id='link2').find_previous_sibling())
# 前面的兄弟節點 后面的兄弟節點  返回元組
print(soup.find(name='a').find_next_siblings())
print(soup.find(id='link3').find_previous_siblings())
# 前一個元素 后一個元素
print(soup.find(name='a').find_next())
print(soup.find(id='link3').find_previous())  # 查到的是b  因為 <a><b></b></a> a->b這樣的結構 在他前面是b元素
# 前面的所有元素  后面的所有元素 返回元組
print(soup.find(name='a').find_all_next())
print(soup.find(id='link3').find_all_previous())

# #######################################selectcss選擇器# ################################################
# 查找class為sister的 返回的是結果元組
print(soup.select(".sister"))
print(soup.select("#link1"))  # id查詢 返回的也是元組
print(soup.select("#link2 b"))  # 返回下級元素
# 嵌套查詢 就是在已經查出的結果里面查詢
for p in soup.select('p'):
    print(p.select('a'))
# 獲取屬性 attrs
for a in soup.select('a'):
    print(a.attrs['id'])
# 獲取文本 get_text()
for b in soup.select('b'):
    print(b.get_text())

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM