Beautifulsoup():
1、获取节点:soup=Beautiful(html文本,features="lxml)
soup.head #获取head节点
2、获取节点名称:soup.head.name
3、获取节点属性:soup.meta.attrs
4、获取属性中节点对应的值:soup.meta.attrs['http-equiv'] # 获取http-equiv属性对应的值
soup.meta.attrs['href'] # 获取link节点中的href属性对应的值
soup.meta.attrs['class'] # 获取div节点中class属性对应的值
# 不加attrs,在节点后面直接加属性名称也可以获取对应的值
如soup.meta['http-equiv']或soup.meta['href']
5、获取节点包含的文本内容:soup.title.string # 获取title包含的文本内容
又比如:soup.h3.string
6、 嵌套获取节点内容: soup.head.title.string # 获取head下title节点的文本内容
find_all():
1、通过节点名称获取内容:soup.find_all(name='p') # 获取所有名称为p的节点内容
soup.find_all(name='p') [0] # 不言而喻
2、嵌套获取:soup.find_all(name='p')[0].find_all(name='a')
3、根据属性获取内容:soup.find_all(attrs={'value':'1'}) # 获取属性value值为一的所有内容
soup.find_all(class_='p-1') # 获取class为p-1的所有内容 class_ 不是class
4、 获取节点中的文本:soup.find_all(text=re.compile('Python)) # 获取正则表达式的内容
find():
获取第一个匹配的节点:
soup.find(name='p')
soup.find(text=re.compile('Python')) # 只去查找第一次出现的,找到后停止
select():
1、获取所有指定节点内容:soup.select('p') # 获取所有p节点内容
2、索引获取节点:soup.select('p')[1] # 获取所有节点中的第二个节点
3、 逐层获取: soup.select('html head title') # 逐层递进
4、 类名获取:soup.select('.test_2') # 获取类名为test_2的所有节点
5、id值获取:soup.select('#class_1') # 获取id为class_1所对应的节点
6、 与上面相似,可以用来嵌套,获取属性,和获取文本
比如:soup.select('p')[1:] # 获取p节点中第二个以后的p节点
soup.select('a[href]') # 获取存在href的所有a节点
soup.select('p')[0].get_text()