初学者学习 Python 屏幕抓取的最佳方式

新手上路,请多包涵

这可能是难以回答的问题之一,但这里有:

我不考虑我自己的程序员 - 但我想 :-) 我学过 R,因为我厌倦了 spss,而且因为一个朋友向我介绍了这门语言 - 所以我并不完全陌生编程逻辑。

现在我想学习 python - 主要是为了进行屏幕抓取和文本分析,但也为了使用 Pylons 或 Django 编写网络应用程序。

那么:我应该如何学习使用 python 进行屏幕抓取?我开始浏览 零碎的文档,但我觉得很多“魔法”正在发生 - 毕竟 - 我正在努力学习,而不仅仅是做。

另一方面:没有理由重新发明轮子,如果 Scrapy 之于屏幕抓取就像 Django 之于网页,那么直接进入 Scrapy 可能是值得的。你怎么认为?

哦 - 顺便说一句:那种屏幕抓取:我想抓取报纸网站(即相当复杂和大)以提及政治家等 - 这意味着我需要每天抓取,增量和递归 - 我需要记录结果进入各种数据库 - 这让我想到了一个额外的问题:每个人都在谈论非 SQL DB。我应该立即学习使用例如 mongoDB(我认为我不需要强一致性),还是我想做的事情很愚蠢?

感谢您的任何想法 - 如果这通常被视为编程问题,我深表歉意。

原文由 Andreas 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 477
2 个回答

我同意 Scrapy 文档给人的印象。但是,我相信,正如我自己发现的那样,如果你对 Scrapy 有耐心,先通读教程,然后将自己埋头于文档的其余部分,你不仅会开始更好地理解 Scrapy 的不同部分,但您会明白为什么它会按照它的方式做事。它是一个真正意义上的框架,用于编写蜘蛛和屏幕抓取器的框架。您仍然需要学习 XPath,但我发现无论如何最好还是学习它。毕竟,您确实打算抓取网站,了解什么是 XPath 及其工作原理只会让事情变得更容易。

例如,一旦您理解了 Scrapy 中 pipelines 的概念,您将能够体会到用报废物品做各种事情是多么容易,包括将它们存储到数据库中。

BeautifulSoup 是一个很棒的 Python 库,可用于抓取网站。但是,与 Scrapy 相比,它无论如何都不是一个框架。对于您不必花时间编写适当的爬虫并且必须处理大量数据的较小项目,您可以使用 BeautifulSoup。但对于其他任何事情,您只会开始欣赏 Scrapy 提供的那种东西。

原文由 ayaz 发布,翻译遵循 CC BY-SA 4.0 许可协议

看起来 Scrappy 正在使用 XPATH 进行 DOM 遍历,这本身就是一种语言,一段时间内可能会觉得有些神秘。我认为 BeautifulSoup 会给你一个更快的开始。使用 lxml 你将不得不投入更多的时间来学习,但它通常被认为(不仅是我)是 BeautifulSoup 的更好替代品。

对于数据库,我建议您从 SQLite 开始并使用它,直到遇到瓶颈并需要更具可扩展性的东西(这可能永远不会发生,具体取决于您想要走多远),此时您将知道哪种您需要的存储空间。 Mongodb 在这一点上绝对是大材小用,但熟悉 SQL 是一项非常有用的技能。

这是我前段时间给出的一个五行示例,用于说明可以使用 BeautifulSoup。 编写网络机器人的最佳编程语言是什么?

原文由 cababunga 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题