不同的方式/设计来刮取博客网站

时间:2016-08-08 10:20:59

标签: python-2.7 web-scraping scrapy scrapy-spider

我想抓取特定字段的所有博客网站。例如。标题,描述,标签,日期,作者等。我在python中使用scrapy库。

现在每个网站的HTML都会有所不同。我不会总是在h1标签中获得头衔。每个博客网站都有不同的格式。我没有固定数量的网站要抓取。此外,每当我想要抓新网站时,我都不想更改代码。

我应遵循哪些最佳做法/设计模式,以确保我最终遇到更少的问题/挑战。我可以使用Factory模式,最终在每个站点的不同类中。我不想这样做,因为它再次需要开发人员的参与。

我正在寻找可以减少人类参与的解决方案。

2 个答案:

答案 0 :(得分:1)

不完全是工厂模式,但在减少人力设置和维护环境方面,您可能希望查看https://scrapinghub.com/scrapy-cloud/作为托管,运行和管理不同蜘蛛的地方

实际上,在减少重写工作量方面,我了解到我通常会有一到两个导航代码和第三个数据集合定义

  1. 用于处理javascript元素,例如"显示更多"键入javascript按钮
  2. 导航链接以打开以收集信息
  3. 我正在寻找的所有字段中常见的一系列项目(scrapy) - 我只是复制并粘贴此部分并调整适合每个网站的x路径以查找数据所在的位置< / LI>

    这有助于减少在不同站点收集类似数据的重写工作。

    这样一来,大部分时间花在研究如何最好地导航,然后定制数据收集的xpath,而不是每次都必须完全重写。

    希望有所帮助...

答案 1 :(得分:1)

有很少的软件包可以做到这一点,但大多数只是围绕lxml的聪明算法。最知名的可能是newspaper,它是专为文章设计的,但它也适用于博客等。

对于scrapy,你可能想放弃报纸用来使用异步scrapy下载器的下载机制。