Python 3.x 如何从脚本中强制关闭刮屑蜘蛛
我有一个从脚本运行的scrapy机器人,我的问题是:spyder完成爬行后,程序不会结束,所以基本上程序永远运行,直到我手动关闭它,现在这个spyder是一个更大的程序的一部分,所以我不能像其他进程没有发生过的那样关闭它。那么我如何安全地关闭它呢。 我已经浏览了stackoverflow和其他论坛,我得到了,第一个完全不可用,相信我,我已经尝试过了,第二个看起来很有希望,但出于某种原因,Python 3.x 如何从脚本中强制关闭刮屑蜘蛛,python-3.x,scrapy,Python 3.x,Scrapy,我有一个从脚本运行的scrapy机器人,我的问题是:spyder完成爬行后,程序不会结束,所以基本上程序永远运行,直到我手动关闭它,现在这个spyder是一个更大的程序的一部分,所以我不能像其他进程没有发生过的那样关闭它。那么我如何安全地关闭它呢。 我已经浏览了stackoverflow和其他论坛,我得到了,第一个完全不可用,相信我,我已经尝试过了,第二个看起来很有希望,但出于某种原因,close spider当我收到信号spider closed 这是机器人: def pricebot(pro
close spider
当我收到信号spider closed
这是机器人:
def pricebot(prod_name):
class PriceBot(scrapy.Spider):
name = 'pricebot'
query = prod_name
if query.find(' ') is not -1:
query = query.replace(' ', '-')
start_urls = ['http://www.shopping.com/'+query+'/products?CLT=SCH']
def parse(self, response):
prices_container = response.css('div:nth-child(2) > span:nth-child(1) > a:nth-child(1)')
t_cont = response.css('div:nth-child(2)>h2:nth-child(1)>a:nth-child(1)>span:nth-child(1)')
title = t_cont.xpath('@title').extract()
price = prices_container.xpath('text()').extract()
#Sanitise prices results
prices = []
for p in price:
prices.append(p.strip('\n'))
#Grouping Prices To Their Actual Products
product_info = dict(zip(title, prices))
with open('product_info.json','w') as f:
f.write(json.dumps(product_info))
process = CrawlerProcess({
'USER_AGENT': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)'
})
process.crawl(PriceBot)
process.start()
完成后,我需要做其他事情,准确地说,调用其他3个函数显示您的代码为什么要在函数中声明spider?把它移到别处,然后把它作为一个参数传递。。。关于程序没有完成,我想如果你在管理蜘蛛,那么你想保留一个对主反应堆的引用并关闭它。你需要在这里展示你如何管理爬行器的其他相关代码…它在一个函数中,因为它不只是发生,它应该只在需要时发生,特别是当用户单击按钮时。给它传递一个参数似乎很好,你能详细说明一下我是如何做到的吗?这就是我为spider Mate编写的所有代码,告诉我们你的代码为什么要在函数中声明spider?把它移到别处,然后把它作为一个参数传递。。。关于程序没有完成,我想如果你在管理蜘蛛,那么你想保留一个对主反应堆的引用并关闭它。你需要在这里展示你如何管理spider的其他相关代码…这是一个函数,因为它不只是发生,它应该只在需要时发生,特别是当用户单击按钮时。给它传递一个参数似乎很好,你能详细说明我如何做到吗?这就是我为spider mate提供的所有代码