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])