1.Beautiful Soup
Beautiful Soup是一个用于从HTML或XML文件中提取数据的Python库。它提供了一种将复杂的HTML和XML文档转换为树形结构的方式,使得数据的提取变得更加容易。Beautiful Soup提供了许多方法和属性来浏览和搜索树形结构,以便找到所需的信息。
以下是Beautiful Soup库的一些主要特性和用法:
1.解析器: Beautiful Soup支持多种解析器,包括Python标准库中的html.parser
、lxml解析器和html5lib解析器。你可以根据需要选择合适的解析器。
pythonfrom bs4 import BeautifulSoup
# 使用lxml解析器
soup = BeautifulSoup(html, 'lxml')
2.对象的种类: Beautiful Soup将HTML或XML文档解析为一个树形结构,其中包含了标签、字符串和注释等不同的对象。你可以通过这些对象来访问和提取文档中的信息。
# 获取文档中的第一个a标签
tag = soup.a
3.标签的名称和属性: 你可以使用标签对象的名称和属性来访问标签中的信息。
# 获取标签的名称
tag_name = tag.name
# 获取标签的属性
tag_attrs = tag.attrs
4.搜索文档: Beautiful Soup提供了一系列方法,如find()
和find_all()
,用于在文档中搜索特定的标签或文本。
# 查找第一个符合条件的a标签
result = soup.find('a')
# 查找所有符合条件的a标签
results = soup.find_all('a')
5.遍历文档树: 你可以使用标签对象的属性来遍历文档树,访问子节点、父节点和兄弟节点等。
# 遍历子节点
for child in tag.children:
print(child)
2.CSS选择器
在爬虫中,CSS选择器通常用于定位HTML页面中的元素,以便进一步提取数据。使用第三方库如BeautifulSoup或lxml,可以通过CSS选择器来选择和解析HTML元素。
1.解析器: Beautiful Soup支持多种解析器,包括Python标准库中的html.parser
、lxml解析器和html5lib解析器。你可以根据需要选择合适的解析器。
pythonfrom bs4 import BeautifulSoup
# 使用lxml解析器
soup = BeautifulSoup(html, 'lxml')
2.通过标签名称查找:通过标签名进行查找,返回的值是一个列表。
# 查找所有的a标签
soup.select('a')
3.通过class属性查找:
# 在css选择器中 'class=' 用 '.' 来代替
soup.select('.sister')
4.通过id查找:
# 在css选择器中 'id=' 用 '#' 来代替
soup.select('#link')
5.查找id="link"的a标签:
soup.select('a#link')
6.查找p标签下面class="sister"的标签:
soup.select('p .sister')
soup.select('p > .sister') # 与上一个效果相同
7.获取文本内容:
soup.select('a#link')[0].text # 建议使用,与下面的效果相同
soup.select('a#link1')[0].get_text()
8.获取链接内容:
soup.select('a#link')[0]['href']
soup.select('a#link')[0].get('href') # 建议使用,与上面的效果相同