WebCollector爬取JS加载的数据很简单,首先需要加入selenium的所有jar包,maven项目向pom.xml中添加下面代码
2017-05-11 21:33
836 查看
WebCollector爬取JS加载的数据很简单,首先需要加入selenium的所有jar包,maven项目向pom.xml中添加下面代码即可:
<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请求分析方法轻松抓取到数据。
原文链接:http://datahref.com/archives/30
<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请求分析方法轻松抓取到数据。
原文链接:http://datahref.com/archives/30
相关文章推荐
- Idear 创建maven web项目后在pom.xml里面添加依赖,但项目里没有jar包
- web项目中代码引用了本地包,又需要使用maven打war包时,pom的配置方法
- eclipse中基于maven构建的web项目pom.xml中指定的jar包无法发布到tomcat中
- Maven项目中如何在官网查找自己所需要jar包(或pom.xml)
- 根据已有项目下lib包里jar文件生成maven的pom.xml 里面所有依赖
- Maven项目pom.xml中添加依赖,但是jar无法引入项目
- 【SpringMVC】基于Maven的SpringMVC项目,web.xml中所有的class都加载不上
- maven之 web项目改造-根据jar包 生成pom.xml
- Maven项目中pom.xml添加依赖,但是jar包没有引入项目
- 如何在maven项目的pom.xml文件中添加jar包
- maven项目中自动下载jar包的pom.xml配置
- WebCollector爬取JS加载的数据
- maven web项目pom.xml配置
- maven项目在pom.xml添加springmvc的依赖
- java mvc web 项目web.xml头改错了,死活加载不上springMvc的jar
- maven的pom.xml中添加想要的jar包
- 【web学习记录】项目框架搭建二(加入需要的jar包)
- Maven项目缺少eclipse自带的插件项目需要建立lib目录加上jar包,或者是已经生成有的, 然后 右键build path add libraries web app libraries
- 在maven的pom.xml中添加<dependency>直接可以下载jar包吗
- 使用assembly将maven项目pom.xml中的jar包打包