Python爬虫解析库安装

解析库的安装

抓取网页代码之后,下一步就是从网页中提取信息。提取信息的方式有多种多样,可以使用正则来提取,但是写起来相对比较烦琐。这里还有许多强大的解析库,如 lxml、Beautiful Soup、pyquery 等。此外,还提供了非常强大的解析方法,如 XPath 解析和 CSS 选择器解析等,利用它们,我们可以高效便捷地从网页中提取有效信息。

本节中,我们就来介绍一下这些库的安装过程。

lxml 的安装

lxml 是 Python 的一个解析库,支持 HTML 和 XML 的解析,支持 XPath 解析方式,而且解析效率非常高。本节中,我们了解一下 lxml 的安装方式,这主要从 Windows、Linux 和 Mac 三大平台来介绍。

1. 相关链接
  • 官方网站:lxml - Processing XML and HTML with Python

  • GitHub:https://github.com/lxml/lxml

  • PyPI:lxml · PyPI

2. Windows 下的安装

在 Windows 下,可以先尝试利用 pip 安装,此时直接执行如下命令即可:

pip3 install lxml

如果没有任何报错,则证明安装成功。

如果出现报错,比如提示缺少 libxml2 库等信息,可以采用 wheel 方式安装。

推荐直接到这里,链接为 http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml,下载对应的 wheel 文件,找到本地安装 Python 版本和系统对应的 lxml 版本,例如 Windows 64 位、Python 3.6,就选择 lxml-3.8.0-cp36-cp36m-win_amd64.whl,将其下载到本地。

然后利用 pip 安装即可,命令如下:

pip3 install lxml-3.8.0-cp36-cp36m-win_amd64.whl

这样我们就可以成功安装 lxml 了。

3. Linux 下的安装

在 Linux 平台下安装问题不大,同样可以先尝试 pip 安装,命令如下:

pip3 install lxml

如果报错,可以尝试下面的解决方案。

CentOS、Red Hat

对于此类系统,报错主要是因为缺少必要的库。

执行如下命令安装所需的库即可:

sudo yum groupinstall -y development tools  
sudo yum install -y epel-release libxslt-devel libxml2-devel openssl-devel

主要是 libxslt-devel 和 libxml2-devel 这两个库,lxml 依赖它们。安装好之后,重新尝试 pip 安装即可。

Ubuntu、Debian 和 Deepin

在这些系统下,报错的原因同样可能是缺少了必要的类库,执行如下命令安装:

sudo apt-get install -y python3-dev build-essential libssl-dev libffi-dev libxml2 libxml2-dev libxslt1-dev zlib1g-dev

安装好之后,重新尝试 pip 安装即可。

4. Mac 下的安装

在 Mac 平台下,仍然可以首先尝试 pip 安装,命令如下:

pip3 install lxml

如果产生错误,可以执行如下命令将必要的类库安装:

xcode-select --install

之后再重新尝试 pip 安装,就没有问题了。

lxml 是一个非常重要的库,后面的 Beautiful Soup、Scrapy 框架都需要用到此库,所以请一定安装成功。

5. 验证安装

安装完成之后,可以在 Python 命令行下测试:

$ python3
>>> import lxml

如果没有错误报出,则证明库已经安装好了。

Beautiful Soup 的安装

Beautiful Soup 是 Python 的一个 HTML 或 XML 的解析库,我们可以用它来方便地从网页中提取数据。它拥有强大的 API 和多样的解析方式,本节就来了解下它的安装方式。

1. 相关链接
  • 官方文档:Beautiful Soup Documentation — Beautiful Soup 4.12.0 documentation

  • 中文文档:Beautiful Soup 4.12.0 文档 — Beautiful Soup 4.12.0 documentation

  • PyPI:beautifulsoup4 · PyPI

2. 准备工作

Beautiful Soup 的 HTML 和 XML 解析器是依赖于 lxml 库的,所以在此之前请确保已经成功安装好了 lxml 库,具体的安装方式参见上节。

3. pip 安装

目前,Beautiful Soup 的最新版本是 4.x 版本,之前的版本已经停止开发了。这里推荐使用 pip 来安装,安装命令如下:

pip3 install beautifulsoup4

命令执行完毕之后即可完成安装。

4. wheel 安装

当然,我们也可以从 PyPI 下载 wheel 文件安装,链接如下: beautifulsoup4 · PyPI

然后使用 pip 安装 wheel 文件即可。

5. 验证安装

安装完成之后,可以运行下面的代码验证一下:

from bs4 import BeautifulSoup  
soup = BeautifulSoup('<p>Hello</p>', 'lxml')  
print(soup.p.string)

运行结果如下:

Hello

如果运行结果一致,则证明安装成功。

注意,这里我们虽然安装的是 beautifulsoup4 这个包,但是在引入的时候却是 bs4。这是因为这个包源代码本身的库文件夹名称就是 bs4,所以安装完成之后,这个库文件夹就被移入到本机 Python3 的 lib 库里,所以识别到的库文件名就叫作 bs4。

因此,包本身的名称和我们使用时导入的包的名称并不一定是一致的。

pyquery 的安装

pyquery 同样是一个强大的网页解析工具,它提供了和 jQuery 类似的语法来解析 HTML 文档,支持 CSS 选择器,使用非常方便。本节中,我们就来了解一下它的安装方式。

1. 相关链接
  • GitHub:https://github.com/gawel/pyquery

  • PyPI:pyquery · PyPI

  • 官方文档:pyquery: a jquery-like library for python — pyquery 2.0.x documentation

2. pip 安装

这里推荐使用 pip 安装,命令如下:

pip3 install pyquery

命令执行完毕之后即可完成安装。

3. wheel 安装

当然,我们也可以到 PyPI pyquery · PyPI 下载对应的 wheel 文件安装。比如如果当前版本为 1.2.17,则下载的文件名称为 pyquery-1.2.17-py2.py3-none-any.whl,此时下载到本地再进行 pip 安装即可,命令如下:

pip3 install pyquery-1.2.17-py2.py3-none-any.whl
4. 验证安装

安装完成之后,可以在 Python 命令行下测试:

$ python3
>>> import pyquery

如果没有错误报出,则证明库已经安装好了。

tesserocr 的安装

在爬虫过程中,难免会遇到各种各样的验证码,而大多数验证码还是图形验证码,这时候我们可以直接用 OCR 来识别。

1. OCR

OCR,即 Optical Character Recognition,光学字符识别,是指通过扫描字符,然后通过其形状将其翻译成电子文本的过程。对于图形验证码来说,它们都是一些不规则的字符,这些字符确实是由字符稍加扭曲变换得到的内容。

例如,对于上图所示的验证码,我们可以使用 OCR 技术来将其转化为电子文本,然后爬虫将识别结果提交给服务器,便可以达到自动识别验证码的过程。

tesserocr 是 Python 的一个 OCR 识别库,但其实是对 tesseract 做的一层 Python API 封装,所以它的核心是 tesseract。因此,在安装 tesserocr 之前,我们需要先安装 tesseract。

2. 相关链接
  • tesserocr GitHub:https://github.com/sirfz/tesserocr

  • tesserocr PyPI:tesserocr · PyPI

  • tesseract 下载地址:Index of /tesseract

  • tesseract GitHub:https://github.com/tesseract-ocr/tesseract

  • tesseract 语言包:https://github.com/tesseract-ocr/tessdata

  • tesseract 文档:https://github.com/tesseract-ocr/tesseract/wiki/Documentation

3. Windows 下的安装

在 Windows 下,首先需要下载 tesseract,它为 tesserocr 提供了支持。

进入下载页面,可以看到有各种 .exe 文件的下载列表,这里可以选择下载 3.0 版本。图为 3.05 版本。

其中文件名中带有 dev 的为开发版本,不带 dev 的为稳定版本,可以选择下载不带 dev 的版本,例如可以选择下载 tesseract-ocr-setup-3.05.01.exe。

下载完成后双击,此时会出现如图所示的页面。

此时可以勾选 Additional language data (download) 选项来安装 OCR 识别支持的语言包,这样 OCR 便可以识别多国语言。然后一路点击 Next 按钮即可。

接下来,再安装 tesserocr 即可,此时直接使用 pip 安装:

pip3 install tesserocr pillow
4. Linux 下的安装

对于 Linux 来说,不同系统已经有了不同的发行包了,它可能叫作 tesseract-ocr 或者 tesseract,直接用对应的命令安装即可。

Ubuntu、Debian 和 Deepin

在 Ubuntu、Debian 和 Deepin 系统下,安装命令如下:

sudo apt-get install -y tesseract-ocr libtesseract-dev libleptonica-dev
CentOS、Red Hat

在 CentOS 和 Red Hat 系统下,安装命令如下:

yum install -y tesseract

在不同发行版本运行如上命令,即可完成 tesseract 的安装。

安装完成后,便可以调用 tesseract 命令了。

接着,我们查看一下其支持的语言:

tesseract --list-langs

运行结果示例:

List of available languages (3):  
eng  
osd  
equ

结果显示它只支持几种语言,如果想要安装多国语言,还需要安装语言包,官方叫作 tessdata,其下载链接为::https://github.com/tesseract-ocr/tessdata。

利用 Git 命令将其下载下来并迁移到相关目录即可,不同版本的迁移命令如下所示。

在 Ubuntu、Debian 和 Deepin 系统下的迁移命令如下:

git clone https://github.com/tesseract-ocr/tessdata.git  
sudo mv tessdata/* /usr/share/tesseract-ocr/tessdata

在 CentOS 和 Red Hat 系统下的迁移命令如下:

git clone https://github.com/tesseract-ocr/tessdata.git  
sudo mv tessdata/* /usr/share/tesseract/tessdata

这样就可以将下载下来的语言包全部安装了。

这时我们重新运行列出所有语言的命令:

tesseract --list-langs

结果如下:

List of available languages (107):  
afr  
amh  
ara  
asm  
aze  
aze_cyrl  
bel  
ben  
bod  
bos  
bul  
cat  
ceb  
ces  
chi_sim  
chi_tra  
...

可以发现,这里列出的语言就多了很多,比如 chi_sim 就代表简体中文,这就证明语言包安装成功了。

接下来再安装 tesserocr 即可,这里直接使用 pip 安装:

pip3 install tesserocr pillow
5. Mac 下的安装

在 Mac 下,我们首先使用 Homebrew 安装 ImageMagick 和 tesseract 库:

brew install imagemagick   
brew install tesseract --all-languages

接下来再安装 tesserocr 即可:

pip3 install tesserocr pillow

这样我们便完成了 tesserocr 的安装。

6. 验证安装

接下来,我们可以使用 tesseract 和 tesserocr 来分别进行测试。

下面我们以如图所示的图片为样例进行测试。

该图片的链接为 https://raw.githubusercontent.com/Python3WebSpider/TestTess/master/image.png,可以直接保存或下载。

首先用命令行进行测试,将图片下载下来并保存为 image.png,然后用 tesseract 命令测试:

tesseract image.png result -l eng && cat result.txt

运行结果如下:

Tesseract Open Source OCR Engine v3.05.01 with Leptonica  
Python3WebSpider

这里我们调用了 tesseract 命令,其中第一个参数为图片名称,第二个参数 result 为结果保存的目标文件名称,-l 指定使用的语言包,在此使用英文(eng)。然后,再用 cat 命令将结果输出。

运行结果便是图片的识别结果:Python3WebSpider。可以看到,这时已经成功将图片文字转为电子文本了。

然后还可以利用 Python 代码来测试,这里就需要借助于 tesserocr 库了,测试代码如下:

import tesserocr  
from PIL import Image  
image = Image.open('image.png')  
print(tesserocr.image_to_text(image))

我们首先利用 Image 读取了图片文件,然后调用了 tesserocr 的 image_to_text 方法,再将其识别结果输出。

运行结果如下:

Python3WebSpider

另外,我们还可以直接调用 file_to_text 方法,这可以达到同样的效果:

import tesserocr  
print(tesserocr.file_to_text('image.png'))

运行结果:

Python3WebSpider

如果成功输出结果,则证明 tesseract 和 tesserocr 都已经安装成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/655886.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

备战蓝桥杯---数据结构与STL应用(基础实战篇1)

话不多说,直接上题: 当然我们可以用队列,但是其插入复杂度为N,总的复杂度为n^2,肯定会超时,于是我们可以用链表来写,同时把其存在数组中,这样节点的访问复杂度也为o(1).下面是AC代码: 下面我们来…

Shell中sed编辑器

1.简介 sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。 sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要么存储在一个 命令文本文件中。 2.sed编辑器的工作流程 sed…

《元梦之星》bug层出不穷,逼得玩家研发“自救套路”?

对于bug,想必喜爱游戏的玩家都不会陌生,在各类软件或者游戏中偶尔会出现一些影响正常运行的bug,但是并不会引起很大的反响。大家之所以能以平常心看待是因为各大游戏或者是应用软件中的bug都会因为玩家的及时发现而进行修复,在出现…

软件价值3-A*算法寻路

A*算法(A-star算法)是一种启发式搜索算法,主要用于在图或网络中找到从起始节点到目标节点的最佳路径。它结合了Dijkstra算法的广度优先搜索和贪婪最优优先搜索的特点,通过估算从起始节点到目标节点的代价来指导搜索方向。 A*算法…

Android中属性property_get和property_set的详细用法介绍

1,property_get和property_set的作用说明 在Android操作系统中,property_get和property_set是用于获取和设置系统属性的函数。这些属性通常用于存储和读取配置信息,例如设备配置、网络设置、系统参数等。 property_get函数用于获取指定属性…

二叉树中和为某一值的路径

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 学习必须往深处挖&…

一、创建Vue3项目

1. 下载 node.js 下载地址:https://nodejs.org/zh-cn 优先选择 16 版本; node -v || node -version 可以检查本地 node.js 版本 2. 设置淘宝镜像源 npm config set registry https://registry.npmmirror.com/ 设置淘宝镜像源 npm config get registry 查看当前镜像…

如何获得《幻兽帕鲁》隐藏帕鲁唤夜兽?13000个配种配方查询 幻兽帕鲁Steam好评率还在涨 Mac苹果电脑玩幻兽帕鲁 Crossover玩Windows游戏

《幻兽帕鲁》是一款Steam平台热门游戏,开放式大陆和养成式冒险结合,成为2024首款热门游戏,不过由于官方仅发布了Windows版的游戏客户端,Mac用户无法直接玩,好在有Crossover这样的神器,让苹果电脑也能玩上《…

JavaScript 基础 (二)

文章目录 JavaScript 基础 (二)一.运算符1.1 **算术运算符**1.1.1 基础1.1.2 算术运算符执行的优先级顺序1.1.3 小结 1.2 **赋值运算符**1.2.1 基础1.2.2 小结 1.3 **一元运算符**1.3.1 基础1.3.2 小结 1.4 **比较运算符**1.4.1 比较运算符的介绍1.4.2 比…

如何改变音频的频率教程

这是一篇教你如何通过一些工具改变音频频率的教学文章。全程所用的软件都是免费的。 本文用到的软件: AIX智能下载器 用于抓取任何视频网站资源的插件 格式工厂 将mp4转化为mp3 Audacity 改变音频频率的软件 如果你已备好mp3或其他格式的音频,那么直接看…

flutter module打包成framework引入原生工程

Flutter - 将 Flutter 集成到现有项目(iOS - Framework篇) 本篇文章大幅参考了 caijinglong 大佬的总结文章: 把flutter作为framework添加到已存在的iOS中[1] 用 Flutter 来开发,从来都不可能是新开的一个纯 Flutter 项目&#xf…

Ubuntu22.04 网络图标突然消失

本来好好的,突然就发现没有网络了,图标也不见了。 特别是Ubuntu虚拟机,容易出现此问题。 修复办法 1. sudo service network-manager stop2. sudo rm /var/lib/NetworkManager/NetworkManager.state3. sudo service network-manager start到…

【STM32CubeMX】生成代码错误

1、不能有中文路径 参考博客: http://t.csdnimg.cn/OdYi2 生成的代码已经帮忙初始化,只需修改main函数的while(1)即可: 2、有可能是Java环境版本不对 我安装的时候操作正确

The Rise and Potential of Large Language Model Based Agents: A Survey 中文翻译

大型语言模型代理的崛起与潜力:综述 摘要 长期以来,人类一直追求与或超越人类水平的人工智能(AI),而人工智能代理被视为实现这一目标的有希望的方式。人工智能代理是感知环境、做出决策并采取行动的人工实体。已经有…

林浩然探索庄子美妙哲学境界

林浩然探索庄子美妙哲学境界 Lin Haoran Explores the Sublime Philosophical Realm of Zhuangzi 在现代社会这个信息洪流中,犹如一片繁华喧嚣的都市丛林,青年学者林浩然却如一只挣脱了世俗束缚的鲲鹏,以其独特的视角和深邃的思考&#xff0c…

TensorFlow2实战-系列教程7:TFRecords数据源制作1

🧡💛💚TensorFlow2实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Jupyter Notebook中进行 本篇文章配套的代码资源已经上传 1、TFRecords 在训练过程中,基本都是使用GPU来计算,但是取一个…

易点易动设备管理平台助力制造企业实现设备的能耗监控

在当今注重环保和可持续发展的时代,能源消耗成为制造企业关注的重要问题。为了提高能源利用效率和降低能源成本,制造企业需要对设备的能耗进行有效监控和管理。易点易动设备管理平台作为一款智能化设备管理解决方案,为制造企业提供了全面的能…

Java 枚举enum类

Java枚举(Enum) 枚举 定义: Java枚举是一种特殊的类,用来表示一组固定的常量。 被enum关键字修饰的类型就是枚举类型 (如果枚举不添加任何方法,枚举值默认为从0开始的有序数据。 比如定义一个枚举类表示…

【C语言】位操作符详解

目录 1、按位与( & ) 2、按位或( | ) 3.按位异或( ^ ) C语言中的位操作符有以下: & | ^//按位与 //按位或 //按位异或 位运算符是计算两者之间的补码,然后得到的是计算后补…

防御保护----防火墙基本知识

一.防火墙的基本知识--------------------------------------------------------- 防火墙:可以想象为古代每个城市的城墙,用来防守敌军的攻击。墙,始于防,忠于守。从古至今,墙予人以安全之意。 防火墙的主要职责在于&…