初学者使用Python学习屏幕抓取的最佳方法

初学者使用Python学习屏幕抓取的最佳方法,python,screen-scraping,beautifulsoup,lxml,scrapy,Python,Screen Scraping,Beautifulsoup,Lxml,Scrapy,这可能是很难回答的问题之一,但下面是: 我不考虑我的自我程序员——但我想:我学过R,因为我对SPSS厌烦了,而且因为一个朋友把我介绍给了语言——所以我对编程逻辑并不陌生。p> 现在我想学习python——主要是做屏幕抓取和文本分析,但也可以用Pylon或Django编写Web应用程序 那么:我应该如何学习使用python进行屏幕刮取呢?我开始通过考试,但我觉得很多“魔法”正在发生——毕竟——我正在努力学习,而不仅仅是去做 另一方面:没有理由重新发明轮子,如果Scrapy是屏幕抓取,就像Djang

这可能是很难回答的问题之一,但下面是:

<>我不考虑我的自我程序员——但我想:我学过R,因为我对SPSS厌烦了,而且因为一个朋友把我介绍给了语言——所以我对编程逻辑并不陌生。p> 现在我想学习python——主要是做屏幕抓取和文本分析,但也可以用Pylon或Django编写Web应用程序

那么:我应该如何学习使用python进行屏幕刮取呢?我开始通过考试,但我觉得很多“魔法”正在发生——毕竟——我正在努力学习,而不仅仅是去做

另一方面:没有理由重新发明轮子,如果Scrapy是屏幕抓取,就像Django是网页,那么它可能毕竟值得直接跳到Scrapy。你觉得怎么样

哦-顺便说一句:这种屏幕抓取:我想抓取报纸网站(即相当复杂和大的)来提及政客等等-这意味着我需要每天、递增和递归地抓取-并且我需要将结果记录到各种数据库中-这让我想到一个额外的问题:每个人都在谈论非SQL DB。我是否应该立即学习使用mongoDB(我认为我不需要很强的一致性),或者对于我想做的事情来说这是愚蠢的


谢谢您的任何想法-如果这被认为是一个编程问题,我很抱歉。

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

对于数据库,我建议您从SQLite开始使用它,直到遇到障碍并需要更具可伸缩性的东西(这可能永远不会发生,取决于您希望使用的程度),这时您就知道需要什么类型的存储。Mongodb在这一点上无疑是过火了,但熟悉SQL是一项非常有用的技能

这里有一个我不久前给出的五行示例来说明hoe BeautifulSoup可以使用。

根据问题的数据库部分,使用正确的工具进行作业。弄清楚你想做什么,你想如何组织你的数据,你需要什么样的访问,等等。然后决定一个没有sql的解决方案是否适合你的项目

我认为,对于各种不同的应用程序来说,没有sql解决方案可以保留。我们已经在过去20年中我在SQL数据库中工作过的各种项目上实现了它们,而没有将其命名为no SQL,这样应用程序就存在了。因此,至少有必要了解一下他们提供的产品以及到目前为止哪些产品运行良好


设计好你的项目,保持持久性层的独立性,如果你认为这是必要的,你应该能够在很小的痛苦下改变你的数据库解决方案。

我同意那些粗糙的文档会给人留下这样的印象。但是,我相信,正如我自己发现的那样,如果你对Scrapy很有耐心,先阅读教程,然后将自己埋头于文档的其余部分,你不仅会开始更好地理解Scrapy的不同部分,而且你会理解它为什么会这样做。它是一个框架,用于编写真正意义上的spider和screen scraper。您仍然需要学习XPath,但我发现无论如何最好还是学习它。毕竟,您确实想刮网站,了解XPath是什么以及它是如何工作的只会让您更容易

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


BeautifulSoup
是一个很棒的Python库,可用于抓取网站。但是,与Scrapy不同,它无论如何都不是一个框架。对于较小的项目,您不必花费时间编写合适的spider,也不必处理大量的数据,您可以使用BeautifulSoup。但是对于其他的事情,你只会开始欣赏Scrapy提供的东西

我建议在学习时从较低级别开始-scrapy是一个高级框架。
阅读一本很好的Python书籍,如then look for parsing HTML。

我非常喜欢BeautifulSoup。我对Python相当陌生,但发现开始抓屏相当容易。我写了一篇简短的教程。我希望这能有所帮助。

在深入研究Scrapy之前,请看Udacity的《计算机科学导论》:


这是熟悉Python的一个很好的方法,一旦您掌握了一些Python的基本知识,实际上您将更快地学习Scrapy

这是一个很好的答案,阿亚兹。非常感谢。明天我将再次访问scrapy docs(在丹麦已经过了午夜),这是一个非常酷的5行示例。根据ayaz的回答,我认为框架解决方案可能是我的fwd方式——但对于简单网页上的简单作业,您的示例非常简单。非常感谢。卡巴邦加:我决定接受阿亚兹的回答,但实际上是你们和阿亚兹在一起让我选择了scrapy——你们每个人都给出了不同的理由。我对你的beautifulsoup示例非常满意。lxml是否认为它是beautifulsoup的更好替代品?我曾经使用过lxml和BeautifulSoup,我发现BeautifulSoup更友好。诚然,它没有XPath的紧凑性,但使用起来非常棒。因为您实际上是在使用Python,所以在BeautifulSoup中使用XPath不可能实现的一些事情比使用lxml简单得多。在创建好的刮刀时,有一件事可以帮助您,那就是您拥有的知识