使用Scrapy对新闻进行爬虫(二)

Scrapy Item学习笔记

scrapy框架下的Item用于定义抓取的数据内容。实现从非结构化数据(网页)中提取结构化数据时,结构化数据所用的数据结构即为该item(Scrapy.Item)

执行方式

声明一个item类,scrapy导入该模块并使用item实例来存储结构化数据。
所有数据的类型Field实际是一个dict的别名而已。
开发者创建item类只需关注一点:1.需要从网站中抓取哪些数据(采用变量名标志)。

例子(dmoz网站资源数据和news新闻数据)

1.文件:items.py

# -*- coding: utf-8 -*-

# Define here the models for your scraped items
#
# See documentation in:
# http://doc.scrapy.org/en/latest/topics/items.html

import scrapy


class DmozItem(scrapy.Item):
    """
    define the fields for your item here like.
    for crawl dmoz items
    """
    title = scrapy.Field()
    link = scrapy.Field()
    desc = scrapy.Field()

class NewsItem(scrapy.Item):
    """
    define the fields for news
    for crawl news items
    """
    url = scrapy.Field()
    source = scrapy.Field()
    title = scrapy.Field()
    editor = scrapy.Field()
    time = scrapy.Field()
    content = scrapy.Field()

2.抓取spider模块导入item类并使用

from NewsSpiderMan.items import NewsItem

使用到的代码片段:

class NewsSpider(CrawlSpider):
    def parse_news(response):
        item = NewsItem()
        item['url'] = [response.url]
        item['source'] =\
            response.xpath('//a[@id="ne_article_source"]/text()').\
            extract()
        item['title'] =\
            response.xpath('//div[@class="post_content_main"]/h1/text()').\
            extract()
        item['editor'] =\
            response.xpath('//span[@class="ep-editor"]/text()').\
             extract()
        item['time'] =\
            response.xpath('//div[@class="post_time_source"]/text()').\
             extract()
        item['content'] =\
            response.xpath('//div[@class="post_text"]/p/text()').\
            extract()
        for key in item:
            for data in item[key]:
                log.msg("item %s value %s" % (key, data))
        return item

Item Loaders类

拥用更加灵活、高效的API来让spider模块对item进行数据填充,更好的对网站数据的解析并填入item项。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值