初学者学习Python爬虫的最佳方法
这可能是一个比较难回答的问题,但我还是试试:
我不算是程序员,但我想成为一名 :-) 我学了R语言,因为我对SPSS感到厌倦,而且有个朋友向我介绍了这门语言,所以我对编程逻辑并不是完全陌生。
现在我想学习Python,主要是为了进行网页数据抓取和文本分析,同时也想用Pylons或Django来写一些网页应用。
那么,我该如何开始学习用Python进行网页数据抓取呢?我开始看Scrapy的文档,但我觉得里面有太多“魔法”了——毕竟,我是想学习,而不仅仅是做。
另一方面,没有必要重新发明轮子,如果Scrapy在网页数据抓取方面的地位就像Django在网页开发中的地位,那么直接跳进Scrapy也许是值得的。你怎么看?
哦,顺便说一下:我想抓取的网页数据是报纸网站(也就是比较复杂和庞大的),主要是为了找出政治人物的提及等信息。这意味着我需要每天抓取,逐步进行,并且要递归抓取——我还需要把结果记录到某种数据库中。这让我有了一个额外的问题:大家都在谈论非SQL数据库。我应该立刻学习使用比如mongoDB吗(我觉得我不需要强一致性),还是这样做对我想做的事情来说太傻了?
谢谢你的任何想法——如果这个问题太笼统,不能算是编程问题,我表示歉意。
6 个回答
我非常喜欢BeautifulSoup这个工具。我刚开始学Python,但发现用它来抓取网页内容还是挺简单的。我写了一篇简短的教程,介绍如何用BeautifulSoup进行网页抓取,链接在这里:用BeautifulSoup抓取网页。希望对你有帮助。
看起来Scrappy在使用XPATH来遍历DOM,这是一种独立的语言,可能一开始会让人觉得有点难懂。我觉得用BeautifulSoup会让你更快上手。用lxml的话,你需要花更多时间去学习,但一般来说(不仅仅是我这么认为),它被认为是比BeautifulSoup更好的选择。
关于数据库,我建议你先从SQLite开始用,直到你遇到瓶颈,需要更强大的东西(这可能永远不会发生,取决于你想走多远),到那时你就会知道自己需要什么样的存储。现在用Mongodb有点过于复杂,但熟悉SQL是一项非常有用的技能。
这里有一个我之前给的五行代码示例,来说明如何使用BeautifulSoup。 哪个编程语言最适合写网络机器人?
我同意Scrapy的文档给人这样的感觉。但是,我相信,如果你对Scrapy有耐心,先从教程开始,然后深入阅读其他文档,你不仅会更好地理解Scrapy的各个部分,还会明白它为什么要这样做。Scrapy实际上是一个用来编写爬虫和抓取网页内容的框架。你还是需要学习XPath,但我觉得无论如何学习它都是最好的。毕竟,你是想抓取网站的,了解XPath是什么以及它是如何工作的,只会让你的工作变得更简单。
比如说,一旦你理解了Scrapy中pipelines
的概念,你就会发现处理抓取到的数据变得非常简单,包括把它们存储到数据库里。
BeautifulSoup
是一个很棒的Python库,可以用来抓取网站内容。但与Scrapy不同,它并不是一个框架。对于一些小项目,如果你不想花时间去写一个完整的爬虫,并且只需要抓取少量数据,使用BeautifulSoup就可以了。但对于其他更复杂的项目,你会开始真正体会到Scrapy所提供的各种便利。