用Python写爬虫,用什么方式、框架比较好?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了用Python写爬虫,用什么方式、框架比较好?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4226字,纯文字阅读大概需要7分钟。
内容图文
![用Python写爬虫,用什么方式、框架比较好?](/upload/InfoBanner/zyjiaocheng/436/cddf3e7f4a2345c185c693a3e847cf76.jpg)
还有,采用现有的Python爬虫框架,相比与直接使用内置库,优势在哪?因为Python本身写爬虫已经很简单了。
回复内容:
可以看看 Scrapy ( http://scrapy.org/ ),基于这个框架来写自己的爬虫 由于项目需求收集并使用过一些爬虫相关库,做过一些对比分析。以下是我接触过的一些库:- Beautiful Soup。名气大,整合了一些常用爬虫需求。缺点:不能加载JS。
- Scrapy。看起来很强大的爬虫框架,可以满足简单的页面爬取(比如可以明确获知url pattern的情况)。用这个框架可以轻松爬下来如亚马逊商品信息之类的数据。但是对于稍微复杂一点的页面,如weibo的页面信息,这个框架就满足不了需求了。
- mechanize。优点:可以加载JS。缺点:文档严重缺失。不过通过官方的example以及人肉尝试的方法,还是勉强能用的。
- selenium。这是一个调用浏览器的driver,通过这个库你可以直接调用浏览器完成某些操作,比如输入验证码。
- cola。一个分布式爬虫框架。项目整体设计有点糟,模块间耦合度较高,不过值得借鉴。
以下是我的一些实践经验:
- 对于简单的需求,比如有固定pattern的信息,怎么搞都是可以的。
- 对于较为复杂的需求,比如爬取动态页面、涉及状态转换、涉及反爬虫机制、涉及高并发,这种情况下是很难找到一个契合需求的库的,很多东西只能自己写。
至于题主提到的:
third party library可以做到built-in library做不到或者做起来很困难的事情,仅此而已。还有就是,爬虫简不简单,完全取决于需求,跟Python是没什么关系的。 要处理 js 运行后的结果,可以使用 html5lib。还有,采用现有的Python爬虫框架,相比与直接使用内置库,优势在哪?因为Python本身写爬虫已经很简单了。
但我觉得最好的是用 beautifulsoup4 的接口,让它内部用 html5lib。 自己写爬虫的话,用一些异步事件驱动库,如gevent,比单纯多线程要好很多。 大二的时候写了一个网络爬虫 爬取 http://amazon.com的某类商品的bestseller top100 的所有评论。
也不用什么框架,在linux下用的叫做 beautifulsoup的库帮助解析html,正则表达式也可以啦 不过好麻烦。
爬虫好慢啦,有个小技巧是走代理,因为是外国网站嘛,非常慢,而且可以防止同一个ip访问次数太多。
大概有几万个网页吧,然后用beautifsoup解析,挑一些自己感兴趣的数据,比如打分、评论、商家、分类什么的。然后用一些科学库做一些简单的统计和报表,比如 numpy、scipy、matplotlib等。网上也有好多数据生成报表的 js 库,很酷炫,也很不错的 :)
恩,就是这样。 我也来回答一下吧.
如果楼主想爬去更大规模的东西,可以有两种方案,一种自己写一个爬虫框架,另一总通过爬虫框架.
1,自己动手写一个爬虫框架,我没写过没法说
2,通过线程的爬虫框框架.
用的比较多的是scrapy,首先scrapy异步,然后scrapy可以写成分布式爬虫.这样面对大数据再也不用爬一辈子啦.
另外还有pyspider,sola等.更多的爬虫我也在收集中,不过如果你要着手开始用框架的话,大概只能找到这两个,究其原因,还是因为很多框架是是英语写的吧,大部分不愿意爬英语的坑.
还有有人提到cola,这个是国人写的,作者这样说过
靠,以前只是听过scrapy,从来没去看过,刚看了一下,发现除了分布式的部分,竟然真挺像的。其实用那个框架到不是一件值得纠结的事,因为几乎没得选.
从scrapy倒是有启发可以保存json文件的形式,减少对数据库的依赖。
想了一下,分布式还是我的初衷,真没想到其他部分这么相近。
第二个问题.python自己的类库和框架有什么区别?
你问这样的问题,是因为,你现在爬的需求还很简单!!
仅仅是爬静态页的话,而且爬不了多少个,真心建议你喜欢什么就用什么好了,或者直接就用类库吧,推荐requests,几行代码就搞定了
但是,生活中不光有静态页这种东西啊,还有ajax,还有js,还有各种各样莫名其妙的细节.
而细节是相当可怕的存在,比如,数据的提取,用正则还是xpath,为什么不是所有的页面都有下一页,一晚上爬了5000条数据,我一共有20万条怎么办,爬虫又被封了,我靠.
有时候想想自己真够坚定不移的.也真是烦
这个时候,你就会知道框架的好处了,框架最大的作用,在于用最简单的方法帮助你实现需求,也就是说,如果你现在可以很好的满足工作的需要,那就不要看框架,如果工作有些吃力,那就去看看吧,说不定别人已经造好了轮子,等着你推车呢!老汉!
cola的链接给你吧
Cola:一个分布式爬虫框架
scrapy百度就是
pyspider还没用 这个要看个人了,开始可以先看scrapy方面的内容,然后结合redis,实现分布式,具体实现可以参考github上的代码,如chineking/cola · GitHub。
存储的话,需要mongodb,要深入的话,这方面的内容还是挺多,而且mongodb可以实现集群式存储,完全可以满足楼主的要求。
框架有很多,比如爬虫框架 | 为自己写代码,楼主可以尝试下。
爬取大规模的数据其实可以通过分布式来实现。 我的博客里有很详细的叙述和源码,python3.4实现。
欢迎交流 网络资源搜索爬虫(python 3.4.1实现) 写了一个小爬虫爬学校学生的照片成绩,爬了三四天。好几次都是卡死 我开发了一个云端爬虫开发框架:神箭手,可以让开发者在云上使用Javascript编写和运行爬虫,欢迎大家来使用拍砖~
内容总结
以上是互联网集市为您收集整理的用Python写爬虫,用什么方式、框架比较好?全部内容,希望文章能够帮你解决用Python写爬虫,用什么方式、框架比较好?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。