BeautifulSoup基礎

MarkdownPad Document

BeautifulSoup

findAll函數
nameList = bsObj.findAll("span", {"class":"green"})
for name in namelist:
    print(name.get_text())

#找到所有屬性class="green"的span標籤,通常在你準備打印、存儲和操作數據時,應該最後才使
用 .get_text() 。一般情況下,你應該儘可能地保留 HTML 文檔的標籤結構。

findAll(tag, attributes, recursive, text, limit, keywords)
find(tag, attributes, recursive, text, keywords)

tag:可以傳一個標籤名稱或者多個標籤組成的列表
attributes:用字典封裝一個標籤的若干屬性和對應的屬性值
recursive:默認爲True,遞歸查找子標籤,設置爲False則只查找一級標籤
text:用標籤的文本內容去匹配,而不是標籤的屬性
limit:對獲取的項進行限制,find就是findall的limit=1
keyword:可以選擇那些具有指定屬性的標籤(由於class在Python中是保留字,而在CSS中是屬性名,所以不推薦用keyword)
例如:
allText = bsObj.findAll(id="text")

BeautifulSoup中的對象

  • BeautifulSoup對象——bsobj

  • 標籤Tag對象——bsObj.div.h1

  • NavigableString對象——標籤裏的文字

  • Comment對象——查找HTML文檔的註釋標籤

    bsObj.div.findAll("img") 會找出文檔中第一個 div 標籤,然後獲取這個 div 後 代裏所有的 img 標籤列表。

    for child in bsObj.find("table",{"id":"giftList"}).children: print(child)     #找table的子標籤

    for sibling in bsObj.find("table",{"id":"giftList"}).tr.next_siblings: print(sibling)   #找tr後面的兄弟標籤

  • nextsiblings與previoussiblings 一組

  • nextsibling與previoussibling 一個

  • parent  找父標籤

郵箱正則:  [A-Za-z0-9._+]+@[A-Za-z]+.(com|org|edu|net)

EhyPDBq.png

通過正則表達式匹配內容:
images = bsObj.findAll("img",{"src":re.compile("\.\.\/img\/gifts/img.*\.jpg")})
#都是以 ../img/gifts/img 開頭 以 .jpg 結尾
for image in images:
    print(image["src"])

獲取屬性

  • tag.attrs   得到屬性字典

  • imgTag.attrs["src"]   獲取圖片標籤的src屬性的值

  • soup.findAll(lambda tag: len(tag.attrs) == 2)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章