建议参照目录大纲,即笔记第一篇来了解大致路线后进行博客查阅。每大章的分支都十分清楚。
2.4ItemLoader解决代码难以维护的噩梦
之前都是先通过选择器得到值,然后赋值,这样的后果就是代码很难维护而且丑
直接上itemloader
item_loader = ItemLoader(item=ArticleItem(),response=response) item_loader.add_css("title",".title") item_loader.add_xpath("field","div[@class='field_of_article']") item_loader.add_value()
以上就是三种常见形式的使用,分别代表 (属性,规则)(属性,规则)(属性,值)
同时为了解决一些小问题,即数据的预处理
我们在item中进行修改:
这是之前的item
class ArticleItem(scrapy.Item): title = scrapy.Field() field = scrapy.Field() time = scrapy.Field() tag = scrapy.Field()
进行修改:这样就实现了预处理以及滞后处理
class ArticleItem(scrapy.Item): title = scrapy.Field( input_processor = TakeFirst() ) field = scrapy.Field( input_processor = MyFunction() output_processor=TakeFirst() ) time = scrapy.Field() tag = scrapy.Field() def MyFunction(): #自己写的预处理逻辑代码,可以被field中调用 XXXXXXXXXX XXXXXXXXXX
笔记一到十链接
http://blog.csdn.net/sx_csu2016sw/article/details/79284369
http://blog.csdn.net/sx_csu2016sw/article/details/79284427
http://blog.csdn.net/sx_csu2016sw/article/details/79284449
http://blog.csdn.net/sx_csu2016sw/article/details/79284469
http://blog.csdn.net/sx_csu2016sw/article/details/79284481
http://blog.csdn.net/sx_csu2016sw/article/details/79284491
http://blog.csdn.net/sx_csu2016sw/article/details/79284509
http://blog.csdn.net/sx_csu2016sw/article/details/79284525
http://blog.csdn.net/sx_csu2016sw/article/details/79284547
http://blog.csdn.net/sx_csu2016sw/article/details/79284567