新手在这里,在Windows中运行scrapy。如何避免在命令窗口中显示提取的链接和已爬网的项目?我在这个linkhttp://doc.scrapy.org/en/latest/topics/commands.html的“解析”部分找到了评论,不确定它是否相关以及如何应用它。以下是部分代码的详细信息,从我的第二个Ajax请求开始(在第一个Ajax请求中,回调函数是“first_json_response”:
def first_json_response(self, response):
try:
data = json.loads(response.body)
meta = {'results': data['results']}
yield Request(url=url, callback=self.second_json_response,headers={'x-requested-with': 'XMLHttpRequest'}, meta = meta)
def second_json_response(self, response):
meta = response.meta
try:
data2 = json.loads(response.body)
...
“second_json_response”用于从first_json_response中的请求结果中检索响应,以及加载新请求的数据。然后,“meta”和“data”都用于定义需要爬网的项目。目前,meta和链接显示在我提交代码的windows终端中。我想这需要一些额外的时间让计算机在屏幕上显示它们,因此希望它们消失。我希望通过在一种批处理模式下运行scrapy可以加快我漫长的爬行过程。
谢谢!非常感谢您的评论和建议!
答案 0 :(得分:2)
“您可以使用-loglevel / -L命令行选项或使用LOG_LEVEL设置来设置日志级别。”
然后附加到scray crawl etc
命令-loglevel='ERROR'
。这应该会使所有信息从命令行中消失,但我不认为这会加快速度。
答案 1 :(得分:0)
在您的pipelines.py文件中,尝试使用以下内容:
import json
class JsonWriterPipeline(object):
def __init__(self):
self.file = open('items.jl', 'wb')
def process_item(self, item, spider):
line = json.dumps(dict(item)) + "\n"
self.file.write(line)
return item
这样,当你从蜘蛛类中产生一个项目时,它会将它打印到items.jl。
希望有所帮助。