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)
通過正則表達式匹配內容: 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)