9

嗨,我正在研究scrapy,我创建了一个scrapy文件夹scrapy startproject example 并编写了spider来从url中抓取所有数据,并且我使用命令运行了spider scrapy crawl spider_name,它工作正常并且能够获取数据。

但是我有一个要求,我需要使用创建的单个蜘蛛文件来运行scrapy,我的意思是单个 py 文件,例如

python -u /path/to/spider_file_inside_scrapy_folder_created.py

scrapy crawl使用spider.py文件创建scrapy项目文件夹后,是否可以在没有命令的情况下运行蜘蛛

4

5 回答 5

12

是的!如果你想以编程方式而不是通过 Popen 调用命令,你可以按如下方式运行它:

>>> from scrapy.cmdline import execute
>>> execute(['scrapy','crawl','dmoz'])

如果您有任何问题,请告诉我。我使用了scrapy docs在Github上引用的版本进行测试:

https://github.com/scrapy/dirbot

于 2012-09-29T06:28:51.740 回答
7

试试runspider命令:

scrapy runspider /path/to/spider_file_inside_scrapy_folder_created.py
于 2012-10-13T02:35:51.857 回答
3

我认为答案(如果我理解你的问题)现在是使用 API

import scrapy
from scrapy.crawler import CrawlerProcess

class MySpider(scrapy.Spider):
    # Your spider definition
    ...

process = CrawlerProcess({
    'USER_AGENT': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)'
})

process.crawl(MySpider)
process.start()
于 2017-03-14T02:28:05.850 回答
0

你的蜘蛛类文件:

class YouNameSpider(scrapy.Spider):
    name = 'youname'
    allowed_domains = ['https://www.YouName.com']

在 YouName 中创建 main.py:

from scrapy.cmdline import execute
import os, sys
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
execute(['scrapy', 'crawl', 'youname'])
于 2017-10-16T06:38:00.370 回答
0

是的,您可以,首先通过命令提示符到达 xyz.py 文件所在的目的地。然后你可以编写命令:

scrapy runspider xyz.py

如果你想保存输出,你可以写:

scrapy runspider xyz.py -o output.csv

或者您也可以将输出保存在 json 中

于 2017-10-16T07:51:42.073 回答