所以我得到了一个简单的跑步者脚本,它将使用Popen来调用蜘蛛。 跑步者脚本如下:
from subprocess import Popen
import time
def runSpider():
p = Popen(["scrapy", "crawl", "spider1"],
cwd="C:\Users\Kasutaja\Desktop\scrapyTest")
stdout, stderr = p.communicate()
time.sleep(15)
runSpider()
目录是这样的:
-----scrapyTest:
--------------------scrapyTest[folder]: spider[folder], items.py, pipelines.py, settings.py
--------------------runner.py
--------------------scrapy.cfg
当我从cmd行运行时,蜘蛛从dir运行完美: C:\ Users \ Kasutaja \ Desktop \ scrapyTest 。
当我运行我的runner.py脚本时,我得到:
系统找不到指定的文件
编辑:
将Popen改为此后:
p = Popen(["C:\Users\Kasutaja\Desktop\scrapyTest","scrapy", "crawl", "spider1"])
我收到错误:
C:\Users\Kasutaja\Desktop\scrapyTest>python runner.py
Traceback (most recent call last):
File "runner.py", line 13, in <module>
runSpider()
File "runner.py", line 8, in runSpider
p = Popen(["C:\Users\Kasutaja\Desktop\scrapyTest","scrapy", "crawl", "spider
1"])
File "C:\Python27\lib\subprocess.py", line 679, in __init__
errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 896, in _execute_child
startupinfo)
WindowsError: [Error 5] Access is denied
如果重要,我有管理员权限。 我现在也尝试过,使用cmd专门从开始菜单和管理员权限打开脚本,但仍然会得到相同的错误。
答案 0 :(得分:0)
来自文档
对我来说,这意味着你必须做一些像这样的事情如果cwd不是None,则子项的当前目录将更改为 cwd在执行之前。 请注意,不考虑此目录 在搜索可执行文件时,您无法指定程序的路径 相对于cwd。 (强调我的)
Popen(["C:\Users\Kasutaja\Desktop\scrapyTest\scrapy", "crawl", "spider1"])
这将执行带有参数scrapy
和crawl
的程序spider1