使用Docker部署Scrapy爬虫
2015-09-02 15:15
666 查看
使用Docker部署Scrapy爬虫
1、目的与步骤
环境:Ubuntu14.04 LTS,爬虫程序使用scrapy开发,功能比较简单,就是下载百度贴吧第一页中所有帖子中的图片。
目的:将基于Scrapy开发的爬虫程序发布到docker容器中。
步骤:
a. 在主机上使用setuptools打包python程序,包括一个运行爬虫的命令行;
b. 定义dockerfile,内容包括安装ssh、pip、setuptools、scrapy,并挂载volume(/data)用来作为下载路径,然后创建镜像;
c. 由镜像启动容器,同时挂载主机目录(爬虫项目目录),然后安装程序;
d. 执行命令开始下载图片。
2、步骤一:打包爬虫程序
前提:在主机上安装pip,使用pip安装setuptools。
主机上的项目目录结构为:
baidutieba
|--baidutieba
| |--spiders
| | |--__init__.py
| | |--baidutieba_spider.py
| |--__init__.py
| |--items.py
| |--pipelines.py
| |--settings.py
|--scrapy.cfg
因为功能比较简单,代码全部在baidutieba_spider.py中,该文件内容如下:
...
class TiebaSpider(Spider):
name = "tiebaspider"
allowed_domains = ["tieba.baidu.com"]
...
def runspider():
process = CrawlerProcess({
'USER_AGENT': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)'
})
process.crawl(TiebaSpider)
process.start()
类TiebaSpider定义了URL的处理,以及下载的行为。
runspider方法开始运行爬虫(后面会将这个方法映射到一条console命令进行安装)。
在项目根目录下创建setup.py,内容如下:
from setuptools import setup, find_packages
setup(
name = "baidutieba",
version = "0.1",
packages = find_packages(),
entry_points={
'console_scripts': [
'runspider = baidutieba.spiders.baidutieba_spider:runspider',
]
}
)
使用这个setup.py安装后的系统可以通过命令runspider命令直接运行爬虫。
为了打包程序,确认当前在项目根目录,然后执行下列命令:
$ python setup.py bdist_egg
执行成功后,可以看到项目根目录下生成了一些打包文件。
3、步骤二:定义dockerfile
$ vim scrapy_dockerfile
内容如下(因为是docker镜像,所以一些依赖包需要单独安装):
FROM ubuntu
RUN apt-get update
RUN apt-get -y dist-upgrade
RUN apt-get install -y openssh-server
RUN apt-get install -y python2.7-dev python-pip
RUN apt-get install -y zlib1g-dev libffi-dev libssl-dev
RUN apt-get install -y libxml2-dev libxslt1-dev
RUN pip install setuptools
RUN pip install Scrapy
VOLUME /data
使用dockerfile创建image,首先进入包含dockerfile的目录,然后执行:
$ docker build -f scrapy_dockerfile -t scrapy_image .
4、步骤三:由镜像启动容器并挂载项目目录
启动容器(/program挂载了项目根目录,/data为dockerfile中定义的volume)并进入容器的命令行:
$ docker run -it -v /home/python/PycharmProjects/baidutieba:/program scrapy_image /bin/bash
安装python的scrapy项目(/program挂载的是主机上的项目根目录,该目录下有已经创建的setup.py文件和打包文件):
# cd program
# python setup.py install
安装完成后就可以执行命令了,执行命令,运行爬虫:
# runspider
可以看到开始下载了。
5、查看下载内容
因为是图片下载到容器的/data目录下,首先要找到其对应的主机目录:
# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b544f1388274 scrapy_image "/bin/bash" 14 minutes ago Up 14 minutes
# docker inspect -f {{.Volumes}} jovial_carson
map[/data:/var/lib/docker/volumes/2f8548e541de0b65c214d4195d02ade3104ee6acc8a8da0d0478557afc207d10/_data /program:/home/python/PycharmProjects/baidutieba]
可以看到/data对应主机目录/var/lib/docker/volumes/2f8548e541de0b65c214d4195d02ade3104ee6acc8a8da0d0478557afc207d10/_data,OK进入查收下载内容吧。
1、目的与步骤
环境:Ubuntu14.04 LTS,爬虫程序使用scrapy开发,功能比较简单,就是下载百度贴吧第一页中所有帖子中的图片。
目的:将基于Scrapy开发的爬虫程序发布到docker容器中。
步骤:
a. 在主机上使用setuptools打包python程序,包括一个运行爬虫的命令行;
b. 定义dockerfile,内容包括安装ssh、pip、setuptools、scrapy,并挂载volume(/data)用来作为下载路径,然后创建镜像;
c. 由镜像启动容器,同时挂载主机目录(爬虫项目目录),然后安装程序;
d. 执行命令开始下载图片。
2、步骤一:打包爬虫程序
前提:在主机上安装pip,使用pip安装setuptools。
主机上的项目目录结构为:
baidutieba
|--baidutieba
| |--spiders
| | |--__init__.py
| | |--baidutieba_spider.py
| |--__init__.py
| |--items.py
| |--pipelines.py
| |--settings.py
|--scrapy.cfg
因为功能比较简单,代码全部在baidutieba_spider.py中,该文件内容如下:
...
class TiebaSpider(Spider):
name = "tiebaspider"
allowed_domains = ["tieba.baidu.com"]
...
def runspider():
process = CrawlerProcess({
'USER_AGENT': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)'
})
process.crawl(TiebaSpider)
process.start()
类TiebaSpider定义了URL的处理,以及下载的行为。
runspider方法开始运行爬虫(后面会将这个方法映射到一条console命令进行安装)。
在项目根目录下创建setup.py,内容如下:
from setuptools import setup, find_packages
setup(
name = "baidutieba",
version = "0.1",
packages = find_packages(),
entry_points={
'console_scripts': [
'runspider = baidutieba.spiders.baidutieba_spider:runspider',
]
}
)
使用这个setup.py安装后的系统可以通过命令runspider命令直接运行爬虫。
为了打包程序,确认当前在项目根目录,然后执行下列命令:
$ python setup.py bdist_egg
执行成功后,可以看到项目根目录下生成了一些打包文件。
3、步骤二:定义dockerfile
$ vim scrapy_dockerfile
内容如下(因为是docker镜像,所以一些依赖包需要单独安装):
FROM ubuntu
RUN apt-get update
RUN apt-get -y dist-upgrade
RUN apt-get install -y openssh-server
RUN apt-get install -y python2.7-dev python-pip
RUN apt-get install -y zlib1g-dev libffi-dev libssl-dev
RUN apt-get install -y libxml2-dev libxslt1-dev
RUN pip install setuptools
RUN pip install Scrapy
VOLUME /data
使用dockerfile创建image,首先进入包含dockerfile的目录,然后执行:
$ docker build -f scrapy_dockerfile -t scrapy_image .
4、步骤三:由镜像启动容器并挂载项目目录
启动容器(/program挂载了项目根目录,/data为dockerfile中定义的volume)并进入容器的命令行:
$ docker run -it -v /home/python/PycharmProjects/baidutieba:/program scrapy_image /bin/bash
安装python的scrapy项目(/program挂载的是主机上的项目根目录,该目录下有已经创建的setup.py文件和打包文件):
# cd program
# python setup.py install
安装完成后就可以执行命令了,执行命令,运行爬虫:
# runspider
可以看到开始下载了。
5、查看下载内容
因为是图片下载到容器的/data目录下,首先要找到其对应的主机目录:
# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b544f1388274 scrapy_image "/bin/bash" 14 minutes ago Up 14 minutes
# docker inspect -f {{.Volumes}} jovial_carson
map[/data:/var/lib/docker/volumes/2f8548e541de0b65c214d4195d02ade3104ee6acc8a8da0d0478557afc207d10/_data /program:/home/python/PycharmProjects/baidutieba]
可以看到/data对应主机目录/var/lib/docker/volumes/2f8548e541de0b65c214d4195d02ade3104ee6acc8a8da0d0478557afc207d10/_data,OK进入查收下载内容吧。
相关文章推荐
- docker容器网络模式配置场景
- 2.1.1、Dockerfile最佳实战
- docker toolbox在windows下如何为docker命令配置环境变量
- docker+tomcat+java配置(ubuntu)
- Docker RestApi Create mysql Container
- docker资料汇总
- 如何在 Windows 上通过 Kitematic 使用 Docker
- Docker ON MAC OS X -- 第三篇 - 查找并运行 whalesay镜像
- Docker ON MAC OS X -- 第二篇-了解镜像及容器
- MAC OS X上安装Docker
- Docker实践
- Docker中的Volume
- 快速理解Docker - 容器级虚拟化解决方案
- 关于docker的一些问题
- centos+bond+bridge+docker(ssh容器)固定ip实现测试环境(四)
- Centos7安装Docker 1.8总结
- Docker实践
- install docker on openstack juno
- docker
- Docker 文档