2016-07-16 3 views
2

私はスクラブにログインする際に問題があります。私が見つけることができるもののほとんどは古くなっています。ログインしています

私は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") 

は、外観を作るために失敗します。

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

は、私はもう一度だけ、コンソールに、ファイルへの出力を取得していない、とfoobarは表示されません。私はまたのような、クラス__init__でそれを入れて試してみました。誰かが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 
    ) 

これは、あなたが手動で何かを記録したい場合は、shouldn log.txtファイル

としてプロジェクトのルートディレクトリにすべてのscrapy出力を配置しますscrapy loggerを使用していません。廃止されました。ただ、ここでは1

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

のpythonを使用しては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/

関連する問題