📜  import beautifulsoup - Python (1)

📅  最后修改于: 2023-12-03 14:42:05.149000             🧑  作者: Mango

Python爬虫必备——BeautifulSoup

beautifulsoup-logo

BeautifulSoup是用来解析HTML和XML文档的Python库。它的目的是帮助开发者能够更方便地从HTML和XML文档中提取出所需信息,而不必使用复杂的正则表达式或手工的字符串处理方式。

安装

在使用BeautifulSoup之前,你需要先将其安装到你的Python环境中。可以执行以下命令进行安装:

pip install beautifulsoup4

安装完成后,我们就可以在自己的代码中引入BeautifulSoup了。

from bs4 import BeautifulSoup
使用

BeautifulSoup最常用的功能就是解析HTML文档。我们可以将HTML文档的内容传入BeautifulSoup中,然后通过调用BeautifulSoup对象的各种方法,来提取出我们所需的信息。

from bs4 import BeautifulSoup

html_doc = """
<html>
  <head>
    <title>网页标题</title>
  </head>
  <body>
    <h1>网页正文</h1>
    <p>网页内容</p>
  </body>
</html>
"""

soup = BeautifulSoup(html_doc, 'html.parser')

print(soup.title.string)
# 输出:网页标题

print(soup.h1.string)
# 输出:网页正文

print(soup.p.string)
# 输出:网页内容

上面的代码首先定义了一个HTML文档的字符串,然后将其传入BeautifulSoup对象中,并使用html.parser作为解析器。通过BeautifulSoup对象的各种方法,我们可以轻松地提取出HTML文档中的各种信息。

解析器

默认情况下,BeautifulSoup会使用Python的内置HTML解析器来解析文档。除此之外,BeautifulSoup还支持许多第三方库来进行解析,包括lxmlhtml5lib等。

如果你知道自己正在解析的文档使用的是哪种解析器,那么你可以直接将其作为参数传入BeautifulSoup的构造函数中。

soup = BeautifulSoup(html_doc, 'lxml')
CSS选择器

BeautifulSoup还支持使用CSS选择器来定位HTML文档中的元素。下面是一些常用的CSS选择器的方法:

选择器 | 说明 --- | --- #id | 根据id定位元素,例如#myid .class | 根据class定位元素,例如.myclass tag | 根据标签名定位元素,例如div tag.class | 根据标签名和class定位元素,例如div.myclass tag#id | 根据标签名和id定位元素,例如div#myid [attribute] | 根据元素的某个属性定位元素,例如a[href] [attribute=value] | 根据元素的某个属性和属性值定位元素,例如a[href="http://example.com/"]

下面是一个使用CSS选择器的例子:

html_doc = """
<html>
  <div class="post">
    <h1 class="title">文章标题</h1>
    <ul class="list">
      <li>列表项1</li>
      <li>列表项2</li>
      <li>列表项3</li>
    </ul>
  </div>
</html>
"""

soup = BeautifulSoup(html_doc, 'html.parser')

print(soup.select('.title')[0].get_text())
# 输出:文章标题

for li in soup.select('.list > li'):
    print(li.get_text())
# 输出:
# 列表项1
# 列表项2
# 列表项3

上面的代码中,我们首先定义了一个包含了一个post类的div元素和一些其他元素的HTML文档。然后使用CSS选择器来定位HTML文档中的元素。select方法返回的是一个元素列表,可以使用get_text方法来获取列表中的文本内容。

总结

BeautifulSoup是一个强大的HTML解析器,可以让开发者更加方便地从HTML和XML文档中提取出所需信息。使用它不仅可以减少代码编写的数量,还能够提高代码的可读性和可维护性。需要注意的是,使用BeautifulSoup解析HTML文档时,需要考虑到HTML文档的正确性和结构合理性,以避免解析出错的情况发生。