2016-07-16 57 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/