如何使用py文件运行scrapy

时间:2012-09-29 04:17:57

标签: python scrapy

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

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

python -u /path/to/spider_file_inside_scrapy_folder_created.py

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

5 个答案:

答案 0 :(得分:10)

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

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

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

https://github.com/scrapy/dirbot

答案 1 :(得分:4)

尝试runspider命令:

scrapy runspider /path/to/spider_file_inside_scrapy_folder_created.py

答案 2 :(得分:3)

我认为答案(如果我理解你的问题)现在是use the 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()

答案 3 :(得分: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'])

答案 4 :(得分:0)

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

scrapy runspider xyz.py

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

scrapy runspider xyz.py -o output.csv

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