WebCollector爬取JS加载的数据
2016-02-16 12:55
751 查看
WebCollector爬取JS加载的数据很简单,首先需要加入selenium的所有jar包,maven项目向pom.xml中添加下面代码即可:
下面这个例子可以获取加载完成后的页面:
使用Selenium等模拟浏览器进行异步数据的爬取,效率较低,对于大多数情况,如果不是很麻烦,尽量想办法分析网页的Ajax请求,找出Ajax请求数据的规律。对于较简单的Ajax,即单纯的http get请求,找到请求URL的拼接规律,生成URL,将URL作为爬虫的种子,即可爬取Ajax请求结果。对于较为复杂的Ajax请求,例如需要使用http post方法的请求,可以自己构架爬虫的Requester。很多瀑布流的网站都可以通过简单地Ajax请求分析方法轻松抓取到数据。
你可以使用支付宝钱包扫描下方的二维码进行捐款, 或者通过向支付宝帐号 hujunxianligong@126.com转帐进行捐款。
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>2.44.0</version> </dependency>
下面这个例子可以获取加载完成后的页面:
import cn.edu.hfut.dmic.webcollector.crawldb.DBManager; import cn.edu.hfut.dmic.webcollector.crawler.Crawler; import cn.edu.hfut.dmic.webcollector.fetcher.Executor; import cn.edu.hfut.dmic.webcollector.model.CrawlDatum; import cn.edu.hfut.dmic.webcollector.model.CrawlDatums; import cn.edu.hfut.dmic.webcollector.plugin.berkeley.BerkeleyDBManager; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.openqa.selenium.WebElement; import org.openqa.selenium.htmlunit.HtmlUnitDriver; /** * 本教程演示如何利用WebCollector爬取javascript生成的数据 * * @author hu */ public class DemoSelenium { static { //禁用Selenium的日志 Logger logger = Logger.getLogger("com.gargoylesoftware.htmlunit"); logger.setLevel(Level.OFF); } public static void main(String[] args) throws Exception { Executor executor=new Executor() { @Override public void execute(CrawlDatum datum, CrawlDatums next) throws Exception { HtmlUnitDriver driver = new HtmlUnitDriver(); driver.setJavascriptEnabled(true); driver.get(datum.getUrl()); WebElement element=driver.findElementByCssSelector("span#outlink1"); System.out.println("反链数:"+element.getText()); } }; //创建一个基于伯克利DB的DBManager DBManager manager=new BerkeleyDBManager("crawl"); //创建一个Crawler需要有DBManager和Executor Crawler crawler= new Crawler(manager,executor); crawler.addSeed("http://seo.chinaz.com/?host=www.tuicool.com"); crawler.start(1); } }
使用Selenium等模拟浏览器进行异步数据的爬取,效率较低,对于大多数情况,如果不是很麻烦,尽量想办法分析网页的Ajax请求,找出Ajax请求数据的规律。对于较简单的Ajax,即单纯的http get请求,找到请求URL的拼接规律,生成URL,将URL作为爬虫的种子,即可爬取Ajax请求结果。对于较为复杂的Ajax请求,例如需要使用http post方法的请求,可以自己构架爬虫的Requester。很多瀑布流的网站都可以通过简单地Ajax请求分析方法轻松抓取到数据。
通过捐款支持WebCollector
维护WebCollector及教程需要花费较大的时间和精力,如果你喜欢WebCollector的话,欢迎通过捐款的方式,支持开发者的工作,非常感谢!你可以使用支付宝钱包扫描下方的二维码进行捐款, 或者通过向支付宝帐号 hujunxianligong@126.com转帐进行捐款。
相关文章推荐
- 从互联网上爬邮箱
- 用WebCollector制作一个爬取《知乎》并进行问题精准抽取的爬虫(JAVA)
- JAVA爬虫Nutch、WebCollector的正则约束
- JAVA爬虫WebCollector教程列表
- 将WebCollector导入MAVEN项目
- WebCollector下载整站页面(JAVA网络爬虫)
- WebCollector 2.x入门教程——基本概念
- WebCollector自定义http请求
- WebCollector爬取CSDN博客
- 使用Spring JDBC持久化WebCollector爬取的数据
- WebCollector分布式爬取
- Lazy爬虫配置教程
- webmagic总体介绍
- 为大家推荐一款非常好用的java写的垂直爬虫webmagic,力挺
- 使用WebMagic爬新浪博客
- Java简单爬虫系列(3)---正则表达式和Java正则API的使用
- Java简单爬虫系列(4)--- 正则表达式获取百度LOGO
- 用Java抓取知乎日报信息
- WEBCOLLECTION爬图片
- Java简单爬虫系列(2)---HttpClient的使用