• scrapy:TypeError: ‘float’ object is not iterable

    使用scrapy进行网页爬取时,出现:TypeError: 'float' object is not iterable错误,竟然是由于Twisted版本不兼容导致的。具体可参考这里:https://github.com/scrapy/scrapy/issues/2461 修复方法,将Twisted的版本降级到Twisted-16.6.0版本或者小于16.6.0的版本即可。
  • Python爬虫框架Scrapy教程(3)—使用Redis和SQLAlchemy

    在上篇博客中,我们讲解了如何通过维护多个网站的爬取规则来抓取各个网站的数据。本文将简要地谈谈如何使用Scrapy的Item Pipline将爬取的数据去重并存储到数据库中。 Scrapy框架的高度灵活性得益于其数据管道的架构设计,开发者可以通过简单的配置就能轻松地添加新特性。我们可以通过如下的方式添加一个pipline。 settings.set("ITEM_PIPELINES", {'pipelines.DataBasePipeline': 300}) 1 settings.set("ITEM_PIPELINES", {'pipelines.DataBasePipeline': 300}) ……
  • Python爬虫框架Scrapy教程(2)—动态可配置

    本文紧接上篇博客,在上一篇博客中我们讲解了如何使用编程的方式运行Scrapy spider。本文将讲解如何通过维护多个网站的爬取规则来抓取各个网站的数据。 具体要实现的目标是这样的,有一张Rule表用来存储各个网站的爬取规则,Scrapy获取Rule表中的记录后,针对每一条rule自动生成一个spider,每个spider去爬它们各自网站的数据。这样我们只需要维护Rule表中的规则(可以写个Web程序来维护),而不用针对上千个网站写上千个spider文件了。 我们使用 SQLAlchemy 来映射数据库,Rule表的结构如下: from sqlalchemy import C……
  • Python爬虫框架Scrapy教程(1)—入门

    最近实验室的项目中有一个需求是这样的,需要爬取若干个(数目不小)网站发布的文章元数据(标题、时间、正文等)。问题是这些网站都很老旧和小众,当然也不可能遵守 Microdata 这类标准。这时候所有网页共用一套默认规则无法保证正确抓取到信息,而每个网页写一份spider代码也不切实际。 这时候,我迫切地希望能有一个框架可以通过只写一份spider代码和维护多个网站的爬取规则,就能自动抓取这些网站的信息,很庆幸 Scrapy 可以做到这点。鉴于国内外关于这方面资料太少,所以我将这段时间来的经验和代码分享成了本文。 为了讲清楚这件……