1 html_doc = "" 2 sp = BeautifulSoup(html_doc,"html.parser") 3 print(sp.p['class']) 4 #['body','strikeout'] 5 print(sp.p['id']) 6 #zhangsan 7 8 html_d... ...
1 html_doc = "<p class='body strikeout' id='zhangsan'></p>" 2 sp = BeautifulSoup(html_doc,"html.parser") 3 print(sp.p['class']) 4 #['body','strikeout'] 5 print(sp.p['id']) 6 #zhangsan 7 8 html_doc = "<p>Back to the <a rel="index">homepage</a></p>" 9 #想要得到a標簽的rel屬性值 10 print(sp.a['rel']) 11 #['index'] 12 13 .string 只能獲取子標簽是是0個或者1個的內容 14 “<p>123<a href="index">abc</a></p>” 15 sp.p.string #None 16 sp.a.string #abc 17 “<p><a href="index">abc</a></p>” 18 sp.p.string=sp.a.string #abc 19 20 #獲取兄弟節點 21 “<p class="st">123<a rel="index">homepage</a><div rel="bey">abc</div><a rel="index">def</a></p>” 22 a_sp = sp.a 23 print(a_sp.next_sibling)#得到div節點 24 #parent節點同理 25 #.previous_sibling 上一個節點 26 27 28 #獲取所有兄弟節點,迭代 29 “<p class="st">123<a rel="index">homepage</a><div rel="bey">abc</div><a rel="index">def</a></p>” 30 for i in sp.find("a").next_siblings: 31 print(i) 32 #<div rel="bey">abc</div><a rel="index">def</a> 33 34 #下一個節點,有可能與next_sibling相同也可不相同 35 “<p class="st">123<a rel="index">homepage</a><div rel="bey">abc</div><a rel="index">def</a></p>” 36 sp.find("a").next_element #homepage 37 sp.find("a").next_element.next_element.next_element #<div rel="bey">abc</div> 38 sp.find("a").next_element.next_element.next_element.next_element #abc 39 #next_elements 結果就是next_element結果的迭代 40 41 #find(re.compile("^b"))使用正則表達式查找以b開頭的標簽也就是body 42 43 #True 44 for i in sp.find(True): 45 print(i) 46 #匹配所有子節點 47 48 #find_all根據id、class查找節點,當有多個屬性值的時候,要class保證值的順序否則匹配不到結果 49 sp.find_all("p",class_="sister") 50 sp.find_all(id="link1") 51 sp.find_all(class_="sister") 52 53 #查找url中帶有elis的連接 54 sp.find_all(href=re.compile("elis")) 55 56 #查找頁面中指定位置的所有href 57 for i in sp.find("div",class_="xiaoba").find_all("a"): 58 print(i.get("href")) 59 60 #find_all的attrs參數 搜索自定義屬性的標簽,其中attrs的值是dist 61 sp.find_all(attrs={"data-info":"xiaobai"}) 62 63 #通過標簽中的值來過濾標簽 64 sp.find_all("a",text="xiaobai")#篩選值是xiaobai的標簽 65 66 #limit限制返回結果的條數 67 sp.find_all("a",limit=2)返回前兩條數據 68 69 #查找直接子標簽 70 sp.select("p > a")#p標簽的直接子標簽a,可能是多個或一個,返回列表,是直接子標簽 71 sp.select("p > a:nth-of-type(1)")#返回第一個直接子標簽,從1開始 72 73 #查找子標簽下的指定子標簽,id值或class的值作為查找條件,直接子標簽 74 sp.select("div > .class_name") 75 sp.select("div > #id_name") 76 sp.select("div > ul > li > span > b")#支持連貫查詢 77 78 #按照css類名查找 79 sp.select(".class_name"),返回列表 80 81 #id查找 82 sp.select("#id_name") 83 84 #標簽名、class_name、id_name組合查找元素 85 sp.select("a.class_name") 86 sp.select("a#id_name") 87 88 #標簽名、屬性名組合 89 sp.select("a[data-info]")#查找a標簽中帶有data-info屬性的a標簽 90 sp.select("a[data-info='xiaobai']")查找data-info的值是xiaobai的標簽 91 #還支持類似正則表達式的用法 92 sp.select("a[data-info$="is"]")#查找屬性值是以is結尾的標簽 93 sp.select("a[data-info^="is"]")#開頭