# BeautifulSoup
# 灵活方便的网页解析
# pip3 install BeautifulSoup4
# 用法讲解
# lxml html 解析
# lxml XML 解析
# html5lib 解析
# BeautifulSoup
from bs4 import BeautifulSoup
soup = BeautifulSoup(html,'lxml')
print(soup.prettify()) #自动补全HTML代码
print(soup.title.string) #获取里面的内容
标签选择器#############################################3
from bs4 import BeautifulSoup
soup = BeautifulSoup(html,'lxml')
print(soup.title)
print(type(soup.title))
print(soup.head)
print(soup.p)
#######################
获取名称
from bs4 import BeautifulSoup
soup = BeautifulSoup(html,'lxml')
print(soup.title.name) #打印出title名字
###################333
获取属性
from bs4 import BeautifulSoup
soup = BeautifulSoup(html,'lxml')
print(soup.p['name'])
获取内容
from bs4 import BeautifulSoup
soup = BeautifulSoup(html,'lxml')
print(soup.p.string) #获取里面的内容
嵌套选择
from bs4 import BeautifulSoup
soup = BeautifulSoup(html,'lxml')
print(soup.head.title.string)
子节点和子孙节点
from bs4 import BeautifulSoup
soup = BeautifulSoup(html,'lxml')
print(soup.p.contents) #选择子节点
print(soup.p.children)
for i,child in enumerate(soup.p.chidlren) :
print(i,child)
#p的父节点
#a的父节点
------------------------------
获取父节点
from bs4 import BeautifulSoup
soup = BeautifulSoup(html,'lxml')
print(soup.a.parent) ##获取P节点父节点内容
print(soup.a.parents)##获取祖父节点的内容
获取兄弟节点
from bs4 import BeautifulSoup
soup = BeautifulSoup(html,'lxml')
print(soup.a.next_siblings)
##########################################
标注的选择器
find_all(name,atters,recuisive,text,**kwargs)
from bs4 import BeautifulSoup
soup = BeautifulSoup(html,'lxml')
print(soup.find_all('url'))
print(type(soup.find_all('url')))
for ul in soup.find_all('url'):
print(ul.find_all('li'))
#############
attrs #通过属性名进行查找
from bs4 import BeautifulSoup
soup = BeautifulSoup(html,'lxml')
print(soup.find_all(attrs={'id':'list1'}))
print(soup.find_all(id='list1'))
text匹配文本内容
print(soup.find_all(text='FOO'))
##########
find 返回单个元素
find_all 返回所有的元素
find_parents()返回所有祖先节点,find_partent()返回直接父节点
#################################################################3
CSS选择器
通过select() 直接传入CSS选择器可完成选择
from bs4 import BeautifulSoup
soup = BeautifulSoup(html,'lxml')
print(soup.select(.par . ))#选择class,前面加.
print(soup.select('ul li'))#选择标签ul 里面所有的li标签打印出来
for ul in soup.select('ul'):
print(ul.select('li'))



