1 from bs4 import BeautifulSoup
2 import re
3 # 获取需要解析的代码
4 soup = BeautifulSoup(open('1.html','r',encoding='utf8'),'lxml')
5
6 # 改正前端代码中可能出现的错误
7 soup.prettify()
8
9 # 遍历文档树
10 # 只找第一个a标签
11 # print(soup.a.text)
12 # 取文本 a.text 取链接地址a.attrs这个方法返回的数据类型为字典
13
14 # 嵌套 a.tr.td 直接子节点可以用children,父节点用parent 所有子孙节点用descendants 所有的祖先用parents
15
16 # 搜索文档树
17 # def find_all(self, name=标签名字, attrs={属性}, recursive=True, text=None,
18 # limit=None, **kwargs):
19 # 五钟过滤器
20 # 一、字符串 完全匹配
21 # print(soup.find_all(name='div'))
22 # print(soup.find_all(attrs={"class":"icon-title icon-star"}))
23 # print(soup.find_all(text='焦'))
24
25 # 二、列表 可以同时传入多个过滤条件
26 # print(soup.find_all(name=['a','b','div']))
27
28 # 三、正则
29 # print(soup.find(name=re.compile('^b')))
30 # print(soup.find(attrs={'class',re.compile('^wbs')}))
31 # print(soup.find_all(text=re.compile('介\s*')))
32
33 # 四、True
34 # print(soup.find_all(name=True))
35 # print(soup.find_all(attrs=True))
36 # print(soup.find_all(text=True))
37 # print(soup.find_all(name='p',text=True))
38
39 # 五、方法
40 def shuxing(soup):
41 return soup.has_attr("class") and not soup.has_attr('id')
42
43 print(soup.find_all(shuxing))