1 from bs4 import BeautifulSoup 2 import re 3 html=''' 4 <html> 5 <body> 6 <div> 7 <ul> 8 <li class="item-1"><a href="link1.html">张三</a></li> 9 <li class="item-2"><a href="link2.html">李四</a></li> 10 <li class="item-2"><a href="link3.html">王五</a> 11 </li></ul> 12 </div> 13 ''' 14 #解析字符窜形式的html 15 soup=BeautifulSoup(html,"lxml") 16 17 #解析本地的html文档 18 soup2=BeautifulSoup(open("123.html")) 19 20 #格式化输出soup对象 21 print(soup.prettify()) 22 23 #根据标签名获取标签信息 soup.标签名 24 print(soup.li) 25 #获取标签内容 26 print(soup.li.string) 27 #获取标签民 28 print(soup.li.name) 29 #获取标签内所有属性或属性值 30 print(soup.li.attrs["class"]) 31 #获取直接子标签,结果是一个列表 32 print(soup.ul.contents) 33 #获取直接字标签,结果是一个生成器,不是单独打印ul中的每一个标签 34 for i in soup.ul.children: 35 print(i) 36 #获取所有字标签,结果是一个生成器,会单独打印每一个标签 37 for i in soup.ul.descendants: 38 print(i) 39 40 41 #搜索文档树 42 #根据字符窜查找所有的li标签,返回一个结果集,装的是标签对象 43 data=soup.find_all("li") 44 for i in data: 45 print(i.string) 46 47 #根据正则表达式查找标签 48 data=soup.find_all(re.compile("^a")) 49 for i in data: 50 print(i.string) 51 52 53 #根据属性查找标签 54 data=soup.find_all(href="link2.html") 55 for i in data: 56 print(i) 57 58 59 #根据标签内容获取标签内容 60 data=soup.find_all(text=re.compile("张")) 61 print(data[0])