java抓取网页内容(说起Python真的用的语言有那么神奇吗?除了它还可以用哪些语言?)
优采云 发布时间: 2022-01-03 02:09java抓取网页内容(说起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。 (当然ruby也是不错的选择)
另外,爬取网页有时需要模拟浏览器的行为,很多网站都是为了生硬爬取而被屏蔽的。这就是我们需要模拟用户代理的行为来构造合适的请求的地方,比如模拟用户登录,模拟会话/cookie存储和设置。 python中有优秀的第三方包帮你搞定,比如Requests,mechanize
2)网页抓取后的处理
获取的网页通常需要进行处理,如过滤html标签、提取文本等。Python的beautifulsoap提供了简洁的文档处理功能,可以用极短的代码完成大部分文档处理。
其实很多语言和工具都可以做到以上功能,但是python可以做到最快最干净。
除了这些,还有很多优点:支持xpath;基于扭曲,性能良好;更好的调试工具;
这种情况下,如果还需要做js动态内容分析,casperjs不适合,只能基于chrome V8引擎等搭建自己的js引擎。
对于C和C++,虽然性能不错,但不推荐使用,尤其是考虑到成本等诸多因素。对于大多数公司来说,建议基于一些开源框架来做。不要自己发明轮子。制作一个简单的爬虫很容易。 ,但是很难做出一个完整的爬虫。