最近一直在考虑怎样让目前的爬虫更高效,出错率更低。主要的问题就是要兼容url和JS这两种操作方式,所以想了一些关于JS在爬虫方面的应用。
首先,看看这个NEOCrawler比较完善的爬虫开源项目,虽然是用JS写的,但项目的架构很完整,很有参考价值。其中提到了phantomjs可以无需图形界面环境的网页浏览器实现,利用它可以抓取需要js执行才产生内容的网页。通过js语句执行页面上的用户动作,实现表单填充提交后再抓取下一页内容、点击按钮后页面跳转再抓取下一页内容等。解决了我考虑很久的难题,但是怎么在C#项目中结合使用还是个问题。
另外,我之前尝试过用C#实现网页截图,但是都无法优雅的实现截取完整网页的功能,phantomjs已经有了截取完整网页的API接口了——用phantomjs 进行网页整页截屏,可以在C#中简单调用,实现超级简单,效果也很好。
之前,一直觉得JS是前端语言,不太感兴趣,是我的偏见了,在WEB开发这一块,使用JS还是很有优势的,想起一位前辈讲的“每个语言都有它适合的是使用场景”,多有智慧的话啊!