什么是Itemloader?

一种容器,实现直白高效字段提取

直接赋值取值的方式,会出现一下几个问题

  1. 代码量一多,各种css和xpath选择器,充斥整个代码逻辑,没有规则,不利于维护
  2. 对于一个字段的预处理,不明确,也不应该出现在主逻辑中

如何解决以上两个问题?

通过scrapy中的ItemLoader模块来处理

那如何使用呢?

  1. 声明一个容器

  2. 往容器中添加值

  3. 加载容器

  4. 把值传yield给 items

    def analysie_go(self, response):
"""解析页面,提取字段值"""
# 通过response.meta.get方式获取meta传过来的值
img_url = response.meta.get('img_url', '0')
# 声明一个容器,接收item实例和response参数
load_item = ItemLoader(item=JobboleItem(), response=response)
# 指定value添加值
load_item.add_value('img_url', img_url)
load_item.add_value('cont_url', response.url)
load_item.add_value('cont_id', response.url)
# css方式解析值
load_item.add_css('title', '.entry-header h1::text')
load_item.add_css('publish_time', '.entry-meta-hide-on-mobile::text')
# xpath解析值
load_item.add_xpath('cont', '//div[@class="entry"]//text()')
load_item.add_css('link_num', '.vote-post-up h10::text')
load_item.add_css('collection_num', '.bookmark-btn::text')
load_item.add_css('comment_num', '.post-adds a span::text')
# 加载load_item()
article_items = load_item.load_item()
# 把获取的字段交给items
yield article_items

  

scrapy_ItemLoader的更多相关文章

随机推荐

  1. C#对象深度克隆

    有基础的开发者都应该很明白,对象是一个引用类型,例如: object b=new object(); object a=b; 那么a指向的是b的地址,这样在有些时候就会造成如果修改a的值,那么b的值也 ...

  2. 日志采集框架Flume以及Flume的安装部署(一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统)

    Flume支持众多的source和sink类型,详细手册可参考官方文档,更多source和sink组件 http://flume.apache.org/FlumeUserGuide.html Flum ...

  3. 常用原生JS函数和语法集合

    luoyishan-2017-10-08 1. 输出语句:document.write(""); 2. JS中的注释为// 3. 传统的HTML文档顺序是:document-> ...

  4. gulp不完全入门教程

    引言 gulp 是基于 Nodejs 的自动任务运行器,能自动化地完成javascript/coffee/sass/less/html/image/css等文件的的测试.检查.合并.压缩.格式化.浏览 ...

  5. Java DB 访问之(四) spring mvc 组合mybatis

    说明 本项目采用 maven 结构,主要演示了 spring mvc + mybatis,controller 获取数据后以json 格式返回数据. 项目结构 包依赖 与说明 pom文件: <p ...

  6. 学习笔记-echarts x,y轴样式

    //改变坐标轴文本的样式axisLabel:{ textStyle:{ color:'#fff' }},//改变坐标轴和文本的样式axisLine:{ lineStyle:{ color:'#fff' ...

  7. BZOJ:1443: [JSOI2009]游戏Game

    原题链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1443 反正不看题解我是完全想不出系列…… 先把棋盘黑白染色,也就是同一对角线上颜色相同,使 ...

  8. [51nod][cf468D]1558 树中的配对

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1558 不是很懂dalao们用线段树是怎么写的…… 反正找出重心以后每个子 ...

  9. chrome浏览器使用技巧

    在学校的时候一直在用firefox火狐浏览器,听一个学长说使用chrome浏览器在面试的时候有加分,而且还跟我说了一些chrome浏览器的使用技巧,最后从火狐浏览器转到谷歌浏览器,就一直在使用谷歌浏览 ...

  10. 应用fstream格式化输出

    我举一个我应用的例子 file.open("shoroud.jrf" ,ios_base::trunc); //打开文件,清空文件内容 if(!file.good()) { pri ...