Scrapy不会将start_urls作为项目返回

时间:2015-07-10 01:37:33

标签: scrapy

使用以下代码,我可以让Scrapy抓取网站的页面,解析这些页面并将每个页面解析的结果作为项目返回到管道中进行处理。

我的问题是我无法弄清楚如何处理start_url页面。 start_url永远不会传递给parse_item函数。

我错过了什么?

class GenericSpider(CrawlSpider):
    name = "Generic"
    allowed_domains = []
    start_urls = []

ignored_extensions = [
    # images
    'mng', 'pct', 'bmp', 'gif', 'jpg', 'jpeg', 'png', 'pst', 'psp', 'tif',
    'tiff', 'ai', 'drw', 'dxf', 'eps', 'ps', 'svg',

    # audio
    'mp3', 'wma', 'ogg', 'wav', 'ra', 'aac', 'mid', 'au', 'aiff',

    # office suites
    'xls', 'xlsx', 'ppt', 'pptx', 'doc', 'docx', 'odt', 'ods', 'odg', 'odp',

    # other
    'css', 'exe', 'bin', 'rss', 'zip', 'rar',
]


rules = [
    Rule(LinkExtractor(deny_extensions=ignored_extensions), follow=True, callback='parse_item')
]

def __init__(self, start_url, source, *args, **kwargs):
    super(GenericSpider, self).__init__(*args, **kwargs) 

    #set common settings
    Bootstrap.init(self, kwargs)

    self.source = source
    self.start_urls = [start_url]
    self.allowed_domains = [urlparse.urlparse(start_url).hostname]

def parse_item(self, response):
    process response and return item ....

1 个答案:

答案 0 :(得分:0)

您需要定义parse_start_url,类似以下内容:

class GenericSpider(CrawlSpider):
    name = "Generic"
    allowed_domains = []
    start_urls = []
    ...
    def parse_item(self, response):
        process response and return item ....

    parse_start_url = parse_item