您好我正在研究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
命令的情况下运行蜘蛛
答案 0 :(得分:10)
是的!如果你想以编程方式而不是通过Popen调用命令,你可以按如下方式运行它:
>>> from scrapy.cmdline import execute
>>> execute(['scrapy','crawl','dmoz'])
如果您有任何问题,请告诉我。我使用了scrapy docs在Github上引用的版本用于测试目的:
答案 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中