对于互联网人来说,web data scraping (web数据采集)已经成为一个迫切而又实在的需求。在如今这个开源的时代,问题往往不在于是否有解决方案,而是如何选择适合你的解决方案,因为总是有很多潜在的方案供你选择。web data scraping当然也不例外,笔者认为,我们至少有四种类型的方案可以选择,
1. web scraping software
专用的数据采集软件不需要你编写任何代码,你只需要配置一些信息,例如采集的目标网址、兴趣字段等等。然而,学习如何使用这些软件却是一项非常费力的事情,大部分都需要有一定的技术背景,常常需要了解的技术有:xpath, html, regular expression。笔者列举几款这方面的软件如下,
- 火车头采集器----支持输出到各种数据库
- A1 Website Scraper------ 支持输出到csv文件;
- bget web data extraction----- 支持输出到数据库和csv文件;
更多这方面的软件信息,可以参考这份文档: collections of web scraping software and server
2. web scraping framework
scraping framework可能是developer的最佳选择,因为其功能强大且效率高,而且有适用于不同平台的framework可供选择,例如:
- scrapy, python平台
- upton, ruby平台
- pismo, ruby平台
- nokogiri
, ruby平台 - node.io, node.js平台
- crawler, node.js平台
笔者认为,python在数据处理方面具有强大的优势,更重要的是,python也非常适合实际产品的开发,笔者执着而坚定地推荐scrapy作为web scraping的首选.
3. web scraping service
如果你只是想获得数据,而又不愿意劳心费神的去学习具体的scraping技术,那么一家可靠的web scraping service服务商可能是你最好的选择,比较知名的web scraping service有如下几个:
- http://80legs.com/services.html
- http://www.grepsr.com/
- http://scrapinghub.com/
- http://www.connotate.com/
- http://scrapinghub.com/
4. 其他的选择
Selenium 原本是浏览器自动化测试工具,但是也可以用于web scraping。 如果你采集的网页内容是由javascript自动生成的,那么你可能需要Selenium, 因为其他的scraping方案中的html parser往往都不支持javascript,例如scrapy。另外,有很多网站禁止scraping, 这个时候你也需要Selenium, 因为Selenium完全是模拟人的浏览行为,Selenium本质上是工作于浏览器之上的。
当然,我们也可以选择很多基于javascript的scraping方案,例如PhantomJS 就是一种非常好的选择,PhantomJS本质上也是模拟了浏览器。
web data scraping的各种解决方案,布布扣,bubuko.com