BeautifulSoup简介
Beautiful Soup 是一个能够从HTML或XML文件中提取数据的Python库.它可能通过你喜爱的转换器实现习用的文档导航,查找,批改文档的形式.Beautiful Soup会帮你节俭数小时甚至数天的工作工夫.
装置:pip3 install BeautifulSoup4
用法
1.根本用法
from bs4 import BeautifulSoupbs = BeautifulSoup(html,"html.parser") # 缩进格局print(bs.prettify()) # 格式化html构造print(bs.title) # 获取title标签的名称print(bs.title.name) # 获取title的nameprint(bs.title.string) # 获取head标签的所有内容print(bs.head) print(bs.div) # 获取第一个div标签中的所有内容print(bs.div["id"]) # 获取第一个div标签的id的值print(bs.a) # 获取第一个a标签中的所有内容print(bs.find_all("a")) # 获取所有的a标签print(bs.find(id="u1")) # 获取id="u1"for item in bs.find_all("a"): print(item.get("href")) # 获取所有的a标签,并遍历打印a标签中的href的值for item in bs.find_all("a"): print(item.get_text())
2.抉择元素
from bs4 import BeautifulSoupsoup = BeautifulSoup(html, 'lxml')print(soup.title)print(type(soup.title))print(soup.head)print(soup.p)#获取名称print(soup.title.name)print(soup.p.attrs['name'])print(soup.p['name'])#获取内容print(soup.p.string)#获取子孙节点print(soup.p.children)for i, child in enumerate(soup.p.children): print(i, child)
3.find_all()
find_all( name , attrs , recursive , text , **kwargs )可依据标签名、属性、内容查找文档,返回所有符合条件的内容#通过标签from bs4 import BeautifulSoupsoup = BeautifulSoup(html, 'lxml')print(soup.find_all('ul'))print(type(soup.find_all('ul')[0]))#通过属性print(soup.find_all(attrs={'id': 'list-1'}))print(soup.find_all(attrs={'name': 'elements'}))print(soup.find_all(id='list-1'))print(soup.find_all(class_='element'))#通过textprint(soup.find_all(text='Foo'))
3.find()
find( name , attrs , recursive , text , **kwargs )find返回单个元素,find_all返回所有元素from bs4 import BeautifulSoupsoup = BeautifulSoup(html, 'lxml')print(soup.find('ul'))print(type(soup.find('ul')))print(soup.find('page'))find_parents() # 返回所有先人节点find_parent() # 返回间接父节点find_next_siblings()返回前面所有兄弟节点find_next_sibling()返回前面第一个兄弟节点find_previous_siblings()返回后面所有兄弟节点find_previous_sibling()返回后面第一个兄弟节点find_all_next()返回节点后所有符合条件的节点find_next()返回第一个符合条件的节点find_all_previous()返回节点后所有符合条件的节点find_previous()返回第一个符合条件的节点
5.css抉择--通过select()间接传入CSS选择器即可实现抉择
from bs4 import BeautifulSoupsoup = BeautifulSoup(html, 'lxml')print(soup.select('.panel .panel-heading'))print(soup.select('ul li'))print(soup.select('#list-2 .element'))print(type(soup.select('ul')[0]))for ul in soup.select('ul'): print(ul.select('li'))#取得属性for ul in soup.select('ul'): print(ul['id']) print(ul.attrs['id'])#获取内容for li in soup.select('li'): print(li.get_text())
援用
BeautifulSoup库详解(集体整顿)
Python中BeautifulSoup库的用法
Beautiful Soup 4.4.0 文档