Beautiful Soup - 安装

由于 BeautifulSoup 不是标准的 python 库,我们需要先安装它。 我们将安装最新的 BeautifulSoup 4 库(也称为 BS4)。

为了隔离我们的工作环境以免干扰现有设置,让我们首先创建一个虚拟环境。


创建虚拟环境(可选)

虚拟环境允许我们为特定项目创建一个独立的 python 工作副本,而不会影响外部设置。

安装任何 python 包机器的最佳方法是使用 pip,但是,如果 pip 尚未安装(您可以在命令或 shell 提示符下使用 – "pip –version" 检查它),您可以通过以下命令进行安装 −

Linux 环境

$sudo apt-get install python-pip

Windows 环境

要在 Windows 中安装 pip,请执行以下操作 −

  • https://bootstrap.pypa.io/get-pip.py 或 github 下载 get-pip.py 到您的计算机。

  • 打开命令提示符并导航到包含 get-pip.py 文件的文件夹。

  • 运行以下命令 −

>python get-pip.py

就是这样,pip 现在已经安装在你的 windows 机器上了。

您可以通过运行以下命令来验证您安装的 pip −

>pip --version
pip 19.2.3 from c:\users\yadur\appdata\local\programs\python\python37\lib\site-packages\pip (python 3.7)

安装虚拟环境

在命令提示符下运行以下命令 −

>pip install virtualenv

运行后,你会看到下面的截图 −

虚拟环境

下面的命令将在您的当前目录中创建一个虚拟环境("myEnv") −

>virtualenv myEnv

截图

激活

要激活您的虚拟环境,请运行以下命令 −

>myEnv\Scripts\activate
虚拟环境

在上面的截图中,你可以看到我们有"myEnv"作为前缀,这告诉我们我们在虚拟环境"myEnv"下。

要退出虚拟环境,请运行 deactivate。

(myEnv) C:\Users\yadur>deactivate
C:\Users\yadur>

由于我们的虚拟环境已准备就绪,现在让我们安装 beautifulsoup。


安装 BeautifulSoup

由于 BeautifulSoup 不是标准库,我们需要安装它。 我们将使用 BeautifulSoup 4 包(称为 bs4)。

Linux 机器

要使用系统包管理器在 Debian 或 Ubuntu linux 上安装 bs4,请运行以下命令 −

$sudo apt-get install python-bs4 (for python 2.x)
$sudo apt-get install python3-bs4 (for python 3.x)

您可以使用 easy_install 或 pip 安装 bs4(以防您在使用系统打包程序安装时发现问题)。

$easy_install beautifulsoup4
$pip install beautifulsoup4

(如果你使用的是python3,你可能需要分别使用easy_install3或pip3)

Windows 机器

在 Windows 中安装 beautifulsoup4 非常简单,特别是如果你已经安装了 pip。

>pip install beautifulsoup4
Beautifulsoup4

现在我们的机器上安装了 beautifulsoup4。 下面说说安装后遇到的一些问题。


安装后的问题

在windows机器上你可能会遇到,wrong version being installed 错误主要是通过 −

  • error: ImportError "No module named HTMLParser"错误,那么你必须在 Python 3 下运行 python 2 版本的代码。

  • error: ImportError "No module named html.parser" 错误,那么你必须在Python 2下运行Python 3版本的代码。

摆脱上述两种情况的最佳方法是再次重新安装 BeautifulSoup,完全删除现有安装。

如果您在 ROOT_TAG_NAME = u'[document]' 行收到 SyntaxError "Invalid syntax",则需要将 python 2 代码转换为 python 3 ,只需安装软件包 −

$ python3 setup.py install

或者在bs4目录下手动运行python的2转3转换脚本 −

$ 2to3-3.2 -w bs4

安装解析器

默认情况下,Beautiful Soup 支持 Python 标准库中包含的 HTML 解析器,但它也支持许多外部第三方 python 解析器,如 lxml 解析器或 html5lib 解析器。

要安装 lxml 或 html5lib 解析器,使用命令 −

Linux 机器

$apt-get install python-lxml
$apt-get insall python-html5lib

Windows 机器

$pip install lxml
$pip install html5lib
安装解析器

一般用户使用lxml是为了速度, 如果您使用的是旧版本的 python 2(2.7.3 版本之前)或 python 3(3.2.2 之前),建议使用 lxml 或 html5lib 解析器,因为 python 的内置 HTML 解析器在处理旧版本时不是很好。


运行 Beautiful Soup

是时候在其中一个 html 页面中测试我们的 Beautiful Soup 包了(以网页 - https://www.tutorialspoint.com/index.htm,您可以选择您想要的任何其他网页)并从中提取一些信息。

在下面的代码中,我们试图从网页中提取标题 −

from bs4 import BeautifulSoup
import requests
url = "https://www.tutorialspoint.com/index.html"
req = requests.get(url)
soup = BeautifulSoup(req.text, "html.parser")
print(soup.title)

输出

<title>H2O, Colab, Theano, Flutter, KNime, Mean.js, Weka, Solidity, Org.Json, AWS QuickSight, JSON.Simple, Jackson Annotations, Passay, Boon, MuleSoft, Nagios, Matplotlib, Java NIO, PyTorch, SLF4J, Parallax Scrolling, Java Cryptography</title>

一个常见的任务是提取网页中的所有 URL。 为此,我们只需要添加以下代码行 −

for link in soup.find_all('a'):
print(link.get('href'))

输出

https://www.tutorialspoint.com/index.htm
https://www.tutorialspoint.com/about/about_careers.htm
https://www.tutorialspoint.com/questions/index.php
https://www.tutorialspoint.com/online_dev_tools.htm
https://www.tutorialspoint.com/codingground.htm
https://www.tutorialspoint.com/current_affairs.htm
https://www.tutorialspoint.com/upsc_ias_exams.htm
https://www.tutorialspoint.com/tutor_connect/index.php
https://www.tutorialspoint.com/whiteboard.htm
https://www.tutorialspoint.com/netmeeting.php
https://www.tutorialspoint.com/index.htm
https://www.tutorialspoint.com/tutorialslibrary.htm
https://www.tutorialspoint.com/videotutorials/index.php
https://store.tutorialspoint.com
https://www.tutorialspoint.com/gate_exams_tutorials.htm
https://www.tutorialspoint.com/html_online_training/index.asp
https://www.tutorialspoint.com/css_online_training/index.asp
https://www.tutorialspoint.com/3d_animation_online_training/index.asp
https://www.tutorialspoint.com/swift_4_online_training/index.asp
https://www.tutorialspoint.com/blockchain_online_training/index.asp
https://www.tutorialspoint.com/reactjs_online_training/index.asp
https://www.tutorix.com
https://www.tutorialspoint.com/videotutorials/top-courses.php
https://www.tutorialspoint.com/the_full_stack_web_development/index.asp
….
….
https://www.tutorialspoint.com/online_dev_tools.htm
https://www.tutorialspoint.com/free_web_graphics.htm
https://www.tutorialspoint.com/online_file_conversion.htm
https://www.tutorialspoint.com/netmeeting.php
https://www.tutorialspoint.com/free_online_whiteboard.htm
http://www.tutorialspoint.com
https://www.facebook.com/tutorialspointindia
https://plus.google.com/u/0/+tutorialspoint
http://www.twitter.com/tutorialspoint
http://www.linkedin.com/company/tutorialspoint
https://www.youtube.com/channel/UCVLbzhxVTiTLiVKeGV7WEBg
https://www.tutorialspoint.com/index.htm
/about/about_privacy.htm#cookies
/about/faq.htm
/about/about_helping.htm
/about/contact_us.htm

同样,我们可以使用beautifulsoup4提取有用的信息。

现在让我们更多地了解上面例子中的"soup"。