哪种语言合适写爬虫程序

1、假设是定向爬取几个页面,做一些复杂的页面解析,爬取效率不是中心要求,那么用什么言语差异不大。

当然要是页面结构复杂,正则表达式写得巨复杂,尤其是用过那些支持xpath的类库/爬虫库后,就会发现此种方式虽然入门门槛低,但扩展性、可维护性等都奇差。因此此种状况下还是引荐采用一些现成的爬虫库,诸如xpath、多线程支持还是必需思索的要素。

2、假设是定向爬取,且主要目的是解析js静态生成的内容

此时分,页面内容是有js/ajax静态生成的,用普通的央求页面->解析的方法就不论用了,需求借助一个相似firefox、chrome阅读器的js引擎来对页面的js代码做静态解析。

此种状况下,引荐思索casperJS+phantomjs或slimerJS+phantomjs ,当然诸如selenium之类的也可以思索。

3、假设爬虫是触及大规模网站爬取,效率、扩展性、可维护性等是必需思索的要素时分

大规模爬虫爬取触及诸多效果:多线程并发、I/O机制、散布式爬取、音讯通讯、判重机制、义务调度等等,此时分言语和所用框架的选取就具有极大意义了。

PHP对多线程、异步支持较差,不建议采用。

NodeJS:对一些垂直网站爬取倒可以,但由于散布式爬取、音讯通讯等支持较弱,依据自己状况判别。

Python:剧烈建议,对以上效果都有较好支持。尤其是Scrapy框架值得作为第一选择。优点诸多:支持xpath;基于twisted,功用不错;有较好的调试工具;

此种状况下,假设还需求做js静态内容的解析,casperjs就不适宜了,只要基于诸如chrome V8引擎之类自己做js引擎。

至于C、C++虽然功用不错,但不引荐,尤其是思索到本钱等诸多要素;关于大局部公司还是建议基于一些开源的框架来做,不要自己发明轮子,做一个复杂的爬虫容易,但要做一个完备的爬虫挺难的。

提供最优质的资源集合

立即查看 了解详情