1。解析页面的能力
2。数据库的操作能力(MySQL的)
3。爬行效率
4。代码量
说明库或框架在需要时推荐的语言,谢谢。
例如:蟒蛇+ MySQLdb的+的urllib2 +重
PS:其实我不喜欢使用Python(可能是Windows平台的原因,你需要把各种字符编码和多线程看起来好像很鸡肋。)

答复:

主要看你的“爬虫”做的定义。

1,如果是针对爬了几页,做一些简单的页面解析,爬行效率是不是核心要求,那么什么语言上的差异很小。
当然,如果页面的结构复杂,正则表达式写得巨复杂,特别是那些用于支持XPath的库/爬行动物水库,就会发现,这种方法虽然进入门槛低,但可扩展性,可维护性等奇差。因此,这种情况下,建议使用爬行动物,例如XPath,多线程支持或因素是必须考虑的一些现成的库。

2,如果定向抓取,而主要目的是解决JS动态生成的内容
这一次,页面内容是JS / AJAX使用正常请求页面动态生成 - >分析方法就不管用了,它需要一个类似的火狐,Chrome浏览器JS引擎做的页面的JS代码动态分析。
在这种情况下,所推荐的或认为casperJS + phantomJS slimerJS + phantomjs,当然,如硒或类似物可被认为是。

3,如果爬行动物参与大规模站爬行,效率,可扩展性,可维护性和其它因素时,必须考虑
大量的爬行动物爬行涉及许多问题:多线程,I / O机制,抓取,新闻通讯,判重机制,任务调度等等,这时候选择的画面上使用的语言有很大的意义。
PHP多线程,异步支持较差,不推荐。
的节点JS:一些爬行倒竖站可能,但由于分散式检索,支持比较差报文通信,根据自己的判断。
Python的:强烈建议,必须对这些问题的一个更好的支持。特别是Scrapy框架堪为首选。许多优点:支持的XPath; 基于扭曲的,性能良好; 更好的调试工具;
在这种情况下,如果你需要做的,解决JS动态内容,不casperjs适当的,如仅根据自己喜欢的JS引擎的Chrome V8引擎。
至于C,C ++是良好的性能,但不建议,尤其是考虑到成本等因素; 对于大多数公司推荐基于一些开源框架没有发明轮子自己,做一个简单的爬行动物容易,但做一个完整的爬行动物挺难。

像内容聚集站微通道结构是基于Scrapy我,当然,还涉及到消息队列。示于图17:


具体内容可以参考一个任务调度服务分配架构 用一个小说说我的感受,PHP不会,使用Python和节点。js。

简单直接抓取:
蟒蛇+ urlib2 +正则表达式+ BS4
or
节点。JS + CO,或者框架DOM的HTML解析器+请求+正则表达式线中的任何一个,它也是很顺利。
对我来说,前两种选择都几乎相当,但主要是我JS比较熟现在选择的节点会出现一些多平台。

在整个站爬行的规模:
蟒蛇+ Scrapy
如果上述两种情况下以蜘蛛DIY小米加步枪,重型大炮Scrapy简单,容易到不行,定制爬行规则,HTTP错误处理,XPath的,RPC,管道机制等。等。。而且,因为Scrapy是基于双绞线实现的,所以是一个很不错的是考虑到效率,相对来说,唯一的缺点是安装比较麻烦,依赖性也比较多,我仍然是相对较新的OSX,同不能直接PIP安装scrapy

另外,如果在它的XPath蜘蛛介绍,然后安装插件XPath的铬,然后解析路径清晰,非常高的开发效率。 PHP和JS出生没这样做; 蟒具有优良的帧,但是我没有使用不清晰; 然而,触摸的节点JS可用来谈谈,因为知乎看到的数据是使用节点被捕。

估计我会在Windows的开发,部署Linux服务器的许多人。在的NodeJS这一点上是一个非常突出的优点:易于部署,跨平台的无障碍差不多,比较蟒蛇 。人们只是层皮关闭。
解析使用cheerio,使用jQuery语法完全兼容,熟悉前端页面,则显得十分清爽,再也不用折腾了常规恼人的;
直接使用此模块就行了Mysql数据库操作,有整个的某些功能;
爬行效率为什么,其实没有真正的压力测试做了,因为我知道几乎渔获,线程多一点去的带宽瓶颈。它是不是真实的,但异步多线程,最后所有的全带宽(几百个线程,10MB / s左右)的时候,也是CPU的50%左右,这仅仅是一个与主机CPU的Linode最低。此外,我通常限制线程和捕获间隔,只需消耗较少的性能;
最后,代码,异步编程是最麻烦的下跌回调地狱,根据自己的实际情况写多行队列,这是不是太麻烦比它要同步编程。 一点一点做一一解答:
1。解析页面的能力
关于这一块,基本上是靠第三方软件包来完成特定的语言解析页面。如果你要从头开始自己的实现妨碍HTML解析器,这是一个很大的难度和时间。基于复杂的操作,产生了大量的网页或JavaScript的请求,调度程序可以通过浏览器环境中完成。就这一个,Python是绝对称职。

2。数据库的操作能力(MySQL的)
操作数据库,Python的官方和第三方链接库的能力。此外,爬虫抓取存储在数据库NoSQL数据我个人认为是比较合适的。

3。爬行效率
事实上脚本语言的运算速度不高,但是相对于抗爬行动物特异性机制站和网络IO速度,即惊讶几个语言的可以忽略不计的速度的强度,但是显影剂的而水平。如果使用网络发送一个请求,等待一个好的时间处理其他事情(多线程,多进程或协程),再有就是对每种语言的效率没问题。

4。代码量
这是的Python的优势,Python代码是简单的和众所周知的知的,只要在适当位置的显影剂水平,Python代码可以作为容易阅读作为伪代码,并降低的代码量。

说明库或框架在需要时推荐的语言,谢谢。
例如:蟒蛇+ MySQLdb的+的urllib2 +重
的Python:请求+的MongoDB + BeautifulSoup

PS:其实我不喜欢使用Python(可能是Windows平台的原因,你需要把各种字符编码和多线程看起来好像很鸡肋。)
由于GIL的,Python不使用多线程多核心的优势,您可以使用多个进程来解决。但对于爬虫,即等待IO网络,它可以被使用的时间越长,以提高协同程序抓取速度。


此外,最近总结了一些经验,在我的专栏编写Python爬行动物,纠正我,如果有兴趣的欢迎围观。
为了捕捉并提取与Python HTML有用的内容,因为这个地区的图书馆真的很方便,beautifulsoup和要求。

节点的方式写入到数据库中,而无需等待异步IO同步完成,我们并不需要涉及到多线程锁定问题。今天节点5。X已支持ES6,你能答应解决多重嵌套回调的问题。

至于数据分析和抓取PHP,还是算了吧。 我节点与PHP。JS Python脚本编写的爬行,只是谈论它。

首先PHP。先说优点:抓取和分析把握上直接使用就行了各种工具很多HTML框架,更省心。缺点:首先,速度/效率是个问题,而一旦下载的电影的海报,因为一个crontab定期,没做优化,打开太多的PHP程序,直接将内存撑爆。那么语法很官僚,太多的关键字各种符号,很简单,给人的不是精心设计的一种感觉,写了很多麻烦。

Node。js。其优点是效率,效率或效率,因为网络是异步的,所以基本上一样强大的数百个并发进程,存储器和CPU的使用是非常小的,如果没有检索到复杂的计算的数据处理,系统瓶颈我基本上在带宽和MySQL等数据库的写入/ O速度。当然,相反的优点和缺点,异步网络意味着你需要回调,如果企业需要的是一个线性的,比如必须等待一个网页抓取完成,数据到达下一个页面抓取,更是在此时间后比依赖层,担心会有多层回调!此时的基本代码结构和逻辑会搞乱。当然,你可以使用步骤等过程控制工具来解决这些问题。

最后,说的Python。如果你没有对效率要求极高,推荐使用Python!首先,Python的语法很简单,同样的语句可以少敲几次键盘。然后,Python是非常适合于处理数据,例如包装和拆包功能参数,解析的列表,矩阵处理,很方便。

他本人是最近得到一个Python数据采集处理套件还修订和完善欢迎明星:yangjiePro /剪切 - GitHub上 Python有Scapy的,旨在使爬虫框架 使用PHP卷曲爬在手机平台的代码的数量
使用卷曲爬行草柳页面,并自动下载图片
嗯,我喜欢草榴石,蟒蛇我还在找,个人觉得,蟒蛇确实很强大,在的NodeJS未来会看,
呵呵,PHP不支持多线程,所以只能使用服务器或扩展做,人与生物圈计划,我不会是一个。
好吧,看在基层会石榴。 推荐使用Python的,多线程方面将是非常酷。
Python编写的程序被用来获取八大音乐电台,让您可以放心推荐。 我以前写的爬行动物PHP,Python和JS写爬行动物没见过,节点。JS不理解。
PHP写爬行动物幸运的是,我写了一个运行具有以下PHP普通话线。与Curl_multi 50并发线程,一天赶上约600,000,取决于速度可以是,我是校园所以速度更快,该数据被用正萃取。
卷曲的lib是一个比较成熟的,异常处理,HTTP头,POST和等做的非常好,它在PHP MySQL的存储操作更安心工作是非常重要的。
但是,在多线程卷曲(Curl_multi)对于初学者而言会比较麻烦,特别是在Curl_multi PHP官方文档介绍了这方面也极为模糊。

Python中写一个爬行动物最大的优势就是比较笨,的lib功能要求,是卷曲和漂亮,但如果你只是做一个简单的爬行动物,易用性好,并有美丽的汤这样的傻瓜lib下,的确是非常适合应用爬行动物。
但是编码可能确实是一个头痛使初学者,我觉得PHP也可能是一个更好一点,其实,如果不是球队要求,做我自己玩的爬行动物,我已经写在PHP。

我觉得在虚拟机一个JavaScript虚拟机,并预留performance谈论。
  1. 这是在沙箱中第一次运行,为数据库或本地文件的操作这将是更多的麻烦,没有原生接口,因为我从来没有使用要做到这一点爬行动物,没有去研究什么其他程序。
  2. 解析DOM树,除了效率比较低比较大的内存占用
  3. 跨域情况下,虽然Chrome可能通过 - 禁用网络安全性被禁用,而且扰民。
  4. 总之JS写的爬行动物,是一个很大的麻烦。
我还没有看到任何人采取这种爬行动物写。

Node。JS我确实没用过。

1。解析页面基本没有区别,大家都支持普通,但一些傻瓜Python开发的能力,使用起来方便很多;
2。操作数据库的能力,那么,PHP有MySQL的原生支持,Python的需要添加LIB MySQLdb的之类的,但不要太麻烦;
3。爬行效率,支持多线程,我的效率并没有感到有什么区别,基本上唯一的瓶颈在网络上。但我没有做严格的检验,毕竟,我没有使用用于实现相同功能的语言,但我觉得更快PHP?
4。码字,爬行动物等简单的事情基本上没有区别,几十个业务线,如果异常处理程序将增加一百行,或麻烦点异常标记下来,沉重的治疗下爬,等量。,也有几百行,我们并没有什么不同。
但是,如果你不把Python的lib中列举的话,显然是最。
当谈到性能,那么,爬行动物和基本性能不搭边,事情并没有考虑。当我打开爬行动物,近30Mbps的效率下爬行,用PHP普通话线做爬行动物,CPU使用率,而且还3-5%,内存消耗可能15-20MiB(酷睿2 P8700--老杳的一些历史中,爬虫是50个线程,每个包含10个阳性提取,JSON解析1,2插入操作数据库(如果不存在的数据的百万级),各种异常判定的约40) - 瓶颈应该只网络
如果你没有G公司的嘴,不要管什么业绩,挑一个都是一样的,再熟悉不过了。
我打开爬行动物几天,大概爬到约270GiB数据。

本文链接:PHP, Python, Node.js 哪个比较适合写爬虫?

您可能也会喜欢

友情链接:

经文 心经唱诵 大悲咒注音