2016-07-16 58 views
2

我在登錄scrapy時遇到了問題,而且我能找到的大部分內容都已過時。登錄Scrapy

我在settings.py文件中設置LOG_FILE="log.txt"並從文檔,這應該工作:

Scrapy提供了每個蜘蛛實例中的記錄器,可以訪問和使用這樣的:

import scrapy 

class MySpider(scrapy.Spider): 

    name = 'myspider' 
    start_urls = ['http://scrapinghub.com'] 

    def parse(self, response): 
     self.logger.info('Parse function called on %s', response.url) 

但是當我做:

class MySpider(CrawlSpider): 
    #other code 
    def parse_page(self,response): 
     self.logger.info("foobar") 

我什麼也沒得到。如果我設置

logger = logging.basicConfig(filename="log.txt",level=logging.INFO) 

在我的文件的頂部,我進口後,它會創建一個日誌文件,默認的輸出被記錄得很好,但

class MySpider(CrawlSpider): 
    #other code 
    def parse_page(self,response): 
     logger.info("foobar") 

未能露面。我也曾嘗試把它在類__init__,因爲這樣的:

def __init__(self, *a, **kw): 
    super(FanfictionSpider, self).__init__(*a, **kw) 
    logging.basicConfig(filename="log.txt",level=logging.INFO) 

我再次得到任何輸出到文件,只需到控制檯,並foobar沒有顯示出來。有人可以指導我如何正確登錄Scrapy嗎?

+0

你有沒有檢查過[有關日誌的官方文檔?](http://doc.scrapy.org/en/latest/topics/logging.html#logging-settings)你應該在'settings.py'文件中設置日誌文件名和其他細節。 – Granitosaurus

+0

@Granitosaurus是的,我在問題開始時就這麼說,並且在整個文檔中引用了文檔 –

回答

4

用於登錄我只是把這個蜘蛛類:

class SomeSpider(scrapy.Spider): 
    configure_logging(install_root_handler=False) 
    logging.basicConfig(
     filename='log.txt', 
     format='%(levelname)s: %(message)s', 
     level=logging.INFO 
    ) 

這將會把所有scrapy輸出到項目的根目錄作爲log.txt文件

如果你想手動登錄的東西你不應該不使用scrapy記錄器,它已被棄用。那麼就使用Python一個

import logging 
logging.error("Some error") 
1

看來你不是在任何時候調用你的parse_page方法。 嘗試對您的parse方法發表評論,並且您將收到NotImplementedError,因爲您正在啓動它,並且您說它「無所事事」。

也許如果您實現您的parse_page方法它會工作

def parse(self, response): 
    self.logger.info('Parse function called on %s', response.url) 
    self.parse_page(response) 

希望它可以幫助你。

0

這裏是如何與Scrapy日誌中的示例代碼:

# -*- coding: utf-8 -*- 
from scrapy import Spider 
from scrapy.http import FormRequest 
from scrapy.utils.response import open_in_browser 


class QuotesSpider(Spider): 
    name = 'quotes' 
    start_urls = ('http://quotes.toscrape.com/login',) 

    def parse(self, response): 
        token = response.xpath('//*[@name="csrf_token"]/@value').extract_first() 
        return FormRequest.from_response(response, 
                                         formdata={'csrf_token': token, 
                                                   'password': 'foobar', 
                                                   'username': 'foobar'}, 
                                         callback=self.scrape_pages) 

    def scrape_pages(self, response): 
        open_in_browser(response) 

        # Complete your code here to scrape the pages that you are redirected to after logging in 

        # .... 
        # .... 

你可以閱讀完整的教程和Scrapy代碼中詳細解釋: https://python.gotrained.com/scrapy-formrequest-logging-in/