如何不显示提取的链接和已删除的项目?

时间:2013-12-14 03:27:55

标签: ajax json hyperlink scrapy items

新手在这里,在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可以加快我漫长的爬行过程。

谢谢!非常感谢您的评论和建议!

2 个答案:

答案 0 :(得分:2)

来自scrapy documentation

“您可以使用-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。

希望有所帮助。