ArmbianSpider

为 Armbian 配置 Python 爬虫框架

Armbian是用于ARM开发板的基于DebianUbuntu的计算机操作系统。

手上正好有一台 N1,装好了 Armbian,之前曾用来测试爬虫,这次记录下配置框架的过程作为备份。

检查 Python 版本

首先检查Python版本:

1
2
3
4
root@aml:~# python -V
Python 2.7.13
root@aml:~# python3 -V
Python 3.5.3

Armbian 一般预装好了两个版本的 Python,可根据需要自行选择,只是需要注意指令的不同。 Python 2.X 版本除为了兼容旧程序外,一般不会用到,因此之后提到 Python 均指 Python 3.X。

使用 PIP 安装

为 Python 安装和管理软件包时常使用pip,首先检查版本:

1
2
root@aml:~# pip3 -V
pip 20.0.2 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)

Armbian 默认 pip 和 pip3 分别对应 Python 2.X 和 Python 3.X,使用时需要进行区分,可通过以上指令确认。默认情况下,pip 和 pip3 都是 9.X 的旧版本,使用前最好通过pip3 install pip -U升级到支持的最新版。此处所见就是升级到 20.0 版本后的结果,同时升级后会自动将 pip 指令链接到 pip3,因此后续提到 pip 时均指对应于 Python 3.X 的 pip3.

为了加速下载,可替换 pypi 国内镜像,以 TUNA 镜像源为例:

1
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

由于旧版本 pip 不支持config指令,也可通过镜像源进行升级:

1
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U

接下来可通过 pip 安装爬虫框架需要的包,以lxml为例,部分输出如下:

1
2
3
4
5
6
7
8
9
root@aml:~# pip install lxml
Collecting lxml
Installing collected packages: lxml
Running setup.py install for lxml ... error
ERROR: Command errored out with exit status 1:
...
compilation terminated.
Compile failed: command 'aarch64-linux-gnu-gcc' failed with exit status 1
...

可以看到,与在 Termux 中的情况类似,编译失败,但是这次的情况中,gcc已经预置了:

1
2
3
4
5
6
7
root@aml:~# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/6/lto-wrapper
Target: aarch64-linux-gnu
Thread model: posix
gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1)

因此需要采用其他解决办法。

使用 APT 安装

在 Armbian 中,还可以通过apt安装 Python 软件包,可通过apt list | grep python3-*查看支持的包,部分输出如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
root@aml:~# apt list | grep python3-*
python3-aalib/oldstable,oldstable 0.3.2-1 all
python3-abstract-rendering/oldstable 0.5.1-1+b1 arm64
python3-acme/oldstable,oldstable,oldstable-updates,oldstable-updates 0.28.0-1~deb9u2 all
python3-acora/oldstable 2.0-2 arm64
python3-acoustid/oldstable,oldstable 1.1.2-2 all
python3-actdiag/oldstable,oldstable 0.5.4+dfsg-1 all
python3-activipy/oldstable,oldstable 0.1-5 all
python3-adal/oldstable,oldstable 0.4.4-1 all
python3-adios/oldstable 1.11.0-1+b1 arm64
python3-admesh/oldstable 0.98.5-1+b2 arm64
python3-aeidon/oldstable,oldstable 1.0-1 all
python3-affine/oldstable,oldstable 2.0.0-1 all
python3-afl/oldstable 0.5.5-1 arm64
python3-aiocoap/oldstable,oldstable 0.1+9ae36f4-1 all
python3-aiodns/oldstable,oldstable 1.1.1-1 all
python3-aioeventlet/oldstable,oldstable 0.5.1-1 all
python3-aiohttp/oldstable 1.2.0-1 arm64
python3-aiohttp-dbg/oldstable 1.2.0-1 arm64
python3-aiohttp-jinja2/oldstable,oldstable 0.8.0-1 all
python3-aiohttp-mako/oldstable,oldstable 0.0.1-1 all
...

因此可通过apt install python3-lxml进行安装,为了方便这里以安装PyQuery为例,lxml 会作为依赖项同时安装:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
root@aml:~# apt install python3-pyquery
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
python3-lxml
Suggested packages:
python3-lxml-dbg python-lxml-doc
Recommended packages:
python3-bs4 python3-html5lib
The following NEW packages will be installed:
python3-lxml python3-pyquery
0 upgraded, 2 newly installed, 0 to remove and 7 not upgraded.
Need to get 0 B/739 kB of archives.
After this operation, 3163 kB of additional disk space will be used.
Do you want to continue? [Y/n]
Selecting previously unselected package python3-lxml.
(Reading database ... 46263 files and directories currently installed.)
Preparing to unpack .../python3-lxml_3.7.1-1_arm64.deb ...
Unpacking python3-lxml (3.7.1-1) ...
Selecting previously unselected package python3-pyquery.
Preparing to unpack .../python3-pyquery_1.2.9-2_all.deb ...
Unpacking python3-pyquery (1.2.9-2) ...
Setting up python3-lxml (3.7.1-1) ...
Setting up python3-pyquery (1.2.9-2) ...

然后在 Python 中测试导入:

1
2
3
4
5
6
root@aml:~# python3
Python 3.5.3 (default, Sep 27 2018, 17:25:39)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyquery as pq
>>>

测试无错误,安装成功。

对于其他依赖 lxml 的爬虫框架,在 Armbian 上直接使用 pip 安装也有可能因为编译失败而无法安装,也可以使用 apt 进行安装

安装 WebDriver

基于SeleniumWebDriver可以进行 Web 应用自动化测试,在爬虫中使用时可以很方便地解决动态渲染网页和验证码等问题,但是Chrome和对应的ChromeDriver都没有提供 Arm 版本,不能直接使用。

因此在 Armbian 中需要使用替代,使用 apt 安装 chromium 和 chromedriver:

1
root@aml:~# apt install chromium chromedriver

亲测安装后可以正常使用基于 Selenium 和 WebDriver 的爬虫,但是需要注意 chromium 安装时占用的空间和运行时占用的内存都比较大。


Python: 3.5.3
Armbian: 5.77
Linux Kernel: 5.0.2-aml-s905


  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  • © 2020 canglan
  • Powered by Hexo Theme Ayer
  • PV: UV:

请我喝杯咖啡吧~