Scrapy爬虫不能同时从Python脚本

时间:2015-11-12 03:21:38

标签: python command-line scrapy

我只是想知道为什么会这样。这是我运行所有的Python脚本:

from scrapy import cmdline

file = open('cityNames.txt', 'r')
cityNames = file.read().splitlines()

for city in cityNames:
    url = "http://" + city + ".website.com"
    output = city + ".json"

    cmdline.execute(['scrapy', 'crawl', 'backpage_tester', '-a', "start_url="+url, '-o', ""+output])

cityNames.txt:

chicago
sanfran
boston

它通过第一个城市罚款,但之后停止。它不会运行sanfran或波士顿 - 只有芝加哥。有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您的方法正在使用同步调用。您应该在Python中使用异步调用(asyncio?)或使用遍历URL的文本文件的bash脚本:

cat urls.txt | xargs -0 -I{} scrapy crawl spider_name -a start_url={}

这应该每个网址发出一个scrapy进程。但是,请注意 - 如果这些爬网在每个站点上都很粗糙,并且您的蜘蛛配置不正确,则可能会轻易使系统过载。