美文网首页
Scrapy中的crawl爬虫模板笔记

Scrapy中的crawl爬虫模板笔记

作者: ultimateYu | 来源:发表于2019-05-10 11:56 被阅读0次

    首先分析官网上给出的示例代码:

    import scrapy
    from scrapy.contrib.spiders import CrawlSpider, Rule
    from scrapy.contrib.linkextractors import LinkExtractor
    
    class MySpider(CrawlSpider):
        name = 'example.com'
        allowed_domains = ['example.com']
        start_urls = ['http://www.example.com']
    
        rules = (
            # 提取匹配 'category.php' (但不匹配 'subsection.php') 的链接并跟进链接(没有callback意味着follow默认为True)
            Rule(LinkExtractor(allow=('category\.php', ), deny=('subsection\.php', ))),
    
            # 提取匹配 'item.php' 的链接并使用spider的parse_item方法进行分析
            Rule(LinkExtractor(allow=('item\.php', )), callback='parse_item'),
        )
    
        def parse_item(self, response):
            self.log('Hi, this is an item page! %s' % response.url)
    
            item = scrapy.Item()
            item['id'] = response.xpath('//td[@id="item_id"]/text()').re(r'ID: (\d+)')
            item['name'] = response.xpath('//td[@id="item_name"]/text()').extract()
            item['description'] = response.xpath('//td[@id="item_description"]/text()').extract()
            return item
    

    疑问:
    1.Rule.LinkExtractor能不能直接使用xpath进行过滤
    LinkExtractor中使用restrict_xpaths参数进行xpath过滤,但直接使用的话会提示找不到后面的参数,说明定位函数不正确

    解答:
    1.之前我把restrict_xpaths参数写在了Rule里,导致一直报错,其实它应该是LinkExtractor的参数

    1. restrict_xpaths应该指向元素 - 要么直接是链接要么包含链接而不是属性

    首先定义自己的爬虫类,继承自CrawlSpider模板类:

    • name:定义爬虫的名字,用于执行爬虫
    • allow_domains:用于限制爬虫的爬取范围,只解析这个字段内的网址
    • start_urls:爬虫将从这个网址开始执行
    • rules:用于指定爬取规则:
    • LinkExtractor:链接提取器

    callback:指定链接返回的函数

    相关文章

      网友评论

          本文标题:Scrapy中的crawl爬虫模板笔记

          本文链接:https://www.haomeiwen.com/subject/yntvxqtx.html