我使用^ {CD1}},太棒了!这么快就造了一个爬虫。随着网站数量的增加,需要创建新的蜘蛛,但这些网站都是同一类型的, 所有这些蜘蛛使用相同的项目、管道、解析过程
项目目录的内容:
test/
├── scrapy.cfg
└── test
├── __init__.py
├── items.py
├── mybasespider.py
├── pipelines.py
├── settings.py
├── spider1_settings.py
├── spider2_settings.py
└── spiders
├── __init__.py
├── spider1.py
└── spider2.py
为了减少源代码冗余,mybasespider.py
有一个基本spider MyBaseSpider
,95%的源代码都在其中,所有其他spider都继承自它,如果spider有一些特殊的东西,重写一些
class methods
,通常只需要添加几行源代码就可以创建一个新的spider
将所有常用设置放在settings.py
中,一个蜘蛛的特殊设置在[spider name]_settings.py
中,例如:
spider1_settings.py
中spider1
的特殊设置:
spider2_settings.py
中spider2
的特殊设置:
from settings import *
LOG_FILE = 'spider2.log'
LOG_LEVEL = 'DEBUG'
JOBDIR = 'spider2-job'
START_URLS = [
'http://test2.com/',
]
Scrapy
在启动spider之前使用LOG_FILE
、LOG_LEVEL
、JOBDIR
START_URLS
中的所有url都填充到MyBaseSpider.start_urls
中,不同的spider有不同的内容,但基本spider MyBaseSpider
中使用的名称START_URLS
没有改变。在
scrapy.cfg
的内容:
[settings]
default = test.settings
spider1 = spider1.settings
spider2 = spider2.settings
[deploy]
url = http://localhost:6800/
project = test
要运行spider,例如spider1
,请执行以下操作:
export SCRAPY_PROJECT=spider1
scrapy crawl spider1
但是这种方式不能用于在scrapyd
中运行蜘蛛。scrapyd-deploy
命令总是在scrapy.cfg
“设置”部分中使用'default'
项目名来构建egg file
,并将其部署到scrapyd
有几个问题:
如果我不为每个spider创建一个项目,这是在一个项目中使用多个spider的方式吗?有更好的办法吗?
如何分离spider的特殊设置(如上所述),这些设置可以在scrapyd
中运行,并减少源代码冗余
如果所有spider使用相同的JOBDIR
,那么并发运行所有spider是否安全?持久蜘蛛状态是否已损坏?
任何见解都将不胜感激。在
由于所有spider都应该有自己的类,因此可以使用
custom_settings
class参数设置每个spider的设置,如下所示:此
custom_settings
将覆盖settings.py
文件中的那些,因此您仍然可以设置一些全局的。在干得好!我在文档中没有找到更好的方法来管理多个spider。在
我不知道scrapyd。{1>时,您应该在环境变量^中运行。在
见scrapy/utils/project.py
我不知道它是否能回答你的第一个问题,但我在多个spider中使用scrapy,过去我使用这个命令
但如果我有一个以上的蜘蛛,这个命令激活它或其他模块,所以我开始使用这个命令:
^{pr2}$示例:“scrapy runspider home/Documents/scrapyproject/scrapyproject/spider1.py”
我希望这会有帮助:)
相关问题 更多 >
编程相关推荐