携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第31天,点击查看活动详情
写在前面
曾经有人问我,为何要写 100 篇关于爬虫的博客?我想说,因为吹牛吹过头了呗,100 篇是真的难写。
希望在未来爬虫 100 例系列博客能在 Python 爬虫教学领域有那么一点点的位置。
今天开始,我将从一些成熟框架入手,继续提高你的爬虫知识面。
Portia 是啥?
这个框架在最开始就计划写一下了,没想到拖到这里,Portia 属于可视化爬虫,基本描述参照下述内容
Portia is a tool that allows you to visually scrape websites without any programming knowledge required. With Portia you can annotate a web page to identify the data you wish to extract, and Portia will understand based on these annotations how to scrape data from similar pages.
大意是:Portia 是一个工具,它允许你在不需要任何编程知识的情况下可视化地抓取网站。看来是不用写代码就可以操作了,不过后面的实操告诉我,没那么简单~
github 地址:github.com/scrapinghub… 文档地址:portia.readthedocs.io/en/2.0-docs…
如果你使用的是 Linux 或者 CentOS 这种服务器,那配置 Portia 起来就非常简单了,很不巧,我最近刚弄了个 Windows7 的台式机,在本地搭建着实还废了一些功夫。
如果不是非用 Windows7 开发,建议尽快切换到 Linux 类的系统上去,否则下述过程中小车说翻就翻了。
部署流程
- 安装 Docker,本文不做过多的涉及,这类教程非常多,但是 Windows7 的确实不多
- 设置虚拟机目录
- 下载 Portia 源码
- 其他配置
- 启动 Portia
安装 Docker
Windows7 电脑只能安装 DockerToolbox,如果你是 Win10,直接安装对应软件即可。
官网下载速度有点慢,直接找到阿里云镜像下载,下载过程中其他问题,稍微检索一下,都可以找到解决方案的,下载之后保持默认选项,一路下一步即可。
mirrors.aliyun.com/docker-tool…
安装完毕之后,在电脑上出现三个图标
- Oracle VM VirtualBox 图标,通过它可以访问 Docker 服务所在的 Linux 虚拟机
- Docker Quickstart Terminal 图标,通过它可以启动、访问 Docker 服务
- Kitematic (Alpha) 图标,可以下载一些 Docker 镜像
点击Docker Quickstart Terminal 等待,如果出现如图所示错误
缺少镜像文件
boot2docker,你可以去 github.com/boot2docker…下载一份,但是网速实在不敢恭维
也可以进入到 C:\Program Files\Docker Toolbox 也就是 Docker Toolbox 的安装目录,找到boot2docker.iso文件,复制一份到 C:\Users\Administrator.docker\machine\cache 目录中即可
出现鲸鱼表示成功
设置虚拟目录
设置虚拟目录之后,我们的虚拟主机就可以访问本地磁盘上的数据了
设置比较简单,运行Oracle VM VirtualBox ,点击设置,共享文件夹-新建共享
勾选自动挂载和固定分配
注意点击 OK,需要重启一下虚拟主机,否则挂载失败
检查是否设置成功
启动Docker Quickstart Terminal
输入docker-machine ssh default
输入mount
如果出现你刚才设置的共享目录则表示成功
尝试启动 Portia
接下来是重点了,也是最容易翻车的地方,查阅官网,我们注意到只需要一行命令就可以启动 portia.readthedocs.io/en/2.0-docs…
docker run -i -t --rm -v <PROJECTS_FOLDER>:/app/data/projects:rw -p 9001:9001 scrapinghub/portia 注意上述 <PROJECTS_FOLDER> 可以定义为自己的路径,一般设置成刚才设定的共享目录
下面这个步骤请注意,当你运行上述代码的时候,你的电脑在国内一般是下载不动的,因为这个镜像有 1.2G 大小,用国外的地址那速度难以忍受。
切换本地镜像加速器
以下是常见的两个问题,我从daocloud.io网站上给你拷贝过来了,这个网站主要服务于国内的 Docker 开发者。
Docker 加速器是什么,我需要使用吗?
使用 Docker 的时候,需要经常从官方获取镜像,但是由于显而易见的网络原因,拉取镜像的过程非常耗时,严重影响使用 Docker 的体验。因此 DaoCloud 推出 Docker 加速器解决这个难题,通过智能路由和缓存机制,极大提升了国内网络访问 Docker Hub 的速度,目前已经拥有了广泛的用户群体,并得到了 Docker 官方的大力推荐。如果您是在国内的网络环境使用 Docker,那么 Docker 加速器一定能帮到您。
Docker 加速器是否收费?有流量限制吗?
我们承诺 DaoCloud 加速器服务是永久免费的,并且无流量限制,请放心使用。
但是,重点来了,我切换他的加速器地址以后,速度并没有变快。所以我切换成了阿里云 的
打开阿里云官网,在全部服务中检索容器镜像服务,找到镜像加速地址,如下图所示
更尴尬的地方来了,这里面写的配置方法是让我们重新弄一个虚拟机,可是我不想这么操作,于是乎有了下面的一系列操作
Docker Toolbox 主机修改加速地址
在Docker Toolbox里面直接运行下述内容
sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=加速地址 |g" /var/lib/boot2docker/profile
然后使用exit退出Docker Toolbox
重启虚拟机
docker-machine restart default
这时你在直接使用 docker 命令进行 Portia 的安装与运行就非常迅速了
docker run -i -t --rm -v 你的文件夹路径:/app/data/projects:rw -p 9001:9001 scrapinghub/portia
打开 Portia 访问地址
本地电脑使用浏览器打开 http://192.168.99.100:9001/ 出现小蜘蛛,Winner!!!
为什么是上述地址,这是因为我们 Windows 分配给虚拟的 Linux 环境的 ip:port 192.168.99.100 访问
这个地址可以在 C:\Users\[UserName]\.docker\machine\machines\default\config.json 这个文件中进行修改
写在后面 - Python 爬虫第 79 讲
Portia 框架如果直接在服务器搭建,就一行代码的事情,但是我们剑走斜路,非要在 Windows7 上搭建一个,整理来说难度还是有的,里面涉及到了 Docker 的一系列内容,如果完全从零开始学习,还是需要花费一些时间的,好好加油。本篇博客先到这里,下一篇,我们开始应用 Portia。如果单纯的想要体验 Portia,可以直接访问官网:portia.scrapinghub.com/进行操作。