php多线程抓取网页(说起Python真的用的语言有那么神奇吗?除了它还可以用哪些语言?)
优采云 发布时间: 2021-09-28 23:20php多线程抓取网页(说起Python真的用的语言有那么神奇吗?除了它还可以用哪些语言?)
说到大数据,你不自觉的就会想到爬虫。说到爬虫使用的语言,很多人首先想到的是Python。Python真的有那么神奇吗?除了它可以使用哪些语言?
C#和Java都可以写爬虫,但原理其实差别不大,只是平台问题。可以认为,如果是有针对性的抓取几个页面,做一些简单的页面解析,抓取效率不是核心要求,那么使用的语言本质上没有太大区别。
使用什么语言取决于情况和主要目的。
如果是定向爬取,主要目的是解析js动态生成的内容,此时页面内容是js/ajax动态生成的,普通请求页面->解析方法行不通,需要使用类似firefox和chrome浏览器的js引擎动态分析页面的js代码。
这种情况建议考虑casperJS+phantomjs或者slimerJS+phantomjs。当然,硒也可以考虑。
3、如果爬虫涉及到*敏*感*词*网站爬取,当效率、可扩展性、可维护性等是必须考虑的因素时,*敏*感*词*爬取涉及的问题很多:多线程并发、I/ O机制、分布式爬取、消息通信、判断机制、任务调度等,这时候语言和框架的选择就显得尤为重要。
PHP 对多线程和异步的支持较差,因此不推荐使用。
NodeJS:对于一些垂直网站的爬取还好,但由于对分布式爬取、消息通信等支持较弱,请根据自身情况判断。
Python:强烈推荐,对上述问题有很好的支持。尤其是Scrapy框架不愧为首选。
主要原因是:
1) 抓取网页本身的界面
与java、c#、C++、python等其他静态编程语言相比,抓取网页文档的界面更加简洁;相较于其他动态脚本语言,如 perl、shell,python 的 urllib2 包提供了更完整的 web 文档 API 访问。(当然*敏*感*词*也是不错的选择)
另外,爬取网页有时需要模拟浏览器的行为,很多网站都是为了生硬爬取而被屏蔽的。这就是我们需要模拟用户代理的行为来构造合适的请求的地方,比如模拟用户登录,模拟session/cookies的存储和设置。python中有很好的第三方包帮你搞定,比如Requests,mechanize
2)网页爬取后的处理
抓取到的网页通常需要进行处理,如过滤html标签、提取文本等。Python的beautifulsoap提供了简洁的文档处理功能,可以用很短的代码完成大部分文档处理。
其实很多语言和工具都可以做到以上功能,但是python可以做到最快最干净。
除了这些,还有很多优点:支持xpath;基于扭曲,性能好;更好的调试工具;
这种情况下,如果还需要做js动态内容分析,casperjs不适合,只能基于chrome V8引擎等搭建自己的js引擎。
至于C和C++,虽然性能不错,但不推荐使用,尤其是考虑到成本等诸多因素。对于大多数公司来说,建议基于一些开源框架来做。不要自己发明轮子。做一个简单的爬虫很容易,但是做一个完整的爬虫很难。