scrapy items的使用

作者: 直尺 | 来源:发表于2017-08-17 17:08 被阅读24次

    练习(二)

    目标抓取

    1. https://segmentfault.com/news 热门头条
    2. 过滤点赞为0的记录

    在练习一的代码基础上,我们新建一个spider叫news

    scrapy genspider news segmentfault.com
    

    自定义items模块并新建newsItem类代码如下

    import scrapy
    
    class NewsItem(scrapy.Item):
        praise = scrapy.Field() #点赞数量
        title = scrapy.Field() #标题
        url = scrapy.Field() #地址
    

    接下来修改spider的parse方法采用itemload
    代码如下

        def parse(self, response):
            items = response.css("div.news__item")
            for item in items:
                load = ItemLoader(item=NewsItem(),selector=item)
                load.add_css('url', "div.news__item-info h4 a::attr(href)") 
                load.add_css('praise', "div.stream__item-zan span.stream__item-zan-number::text")
                load.add_css('title', "div.news__item-info h4 a::text")
                yield load.load_item()
    

    目前为止我们采用item的方式完成了练习一的功能,完成了本次的目标一
    接下来我们采用Item Pipeline的方式来过滤那些赞为零的数据
    在pipelines.py文件中我们建立一个ZanPipeline类来过滤点赞为0的数据

    class ZanPipeline(object):
        def process_item(self, item, spider):
            if int(item['praise'][0])>0:
                return item
            else:
                raise DropItem("delete %s" % item['title'])
    

    最后在settings.py中激活ZanPipeline

    ITEM_PIPELINES = {
       'segmentfault.pipelines.ZanPipeline': 300,
    }
    

    完整代码下载https://www.jianguoyun.com/p/DcuVb5AQvrm_BhjO1TI

    相关文章

      网友评论

        本文标题:scrapy items的使用

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