Java之网络爬虫WebCollector2.1.2+selenium2.44+phantomjs2.1.1

一、简介

版本匹配: WebCollector2.12 + selenium2.44.0 + phantomjs 2.1.1

动态网页爬取: WebCollector + selenium + phantomjs

说明:这里的动态网页指几种可能:1)需要用户交互,如常见的登录操作;2)网页通过JS / AJAX动态生成,如一个html里有<div id="test"></div>,通过JS生成<div id="test"><span>aaa</span></div>。

这里用了WebCollector 2进行爬虫,这东东也方便,不过要支持动态关键还是要靠另外一个API -- selenium 2(集成htmlunit 和 phantomjs).

二、示例

/**
* Project Name:padwebcollector
* File Name:DiscussService.java
* Package Name:com.pad.service
* Date:2018年7月25日下午4:59:44
* Copyright (c) 2018 All Rights Reserved.
*
*/ package com.pad.service; import java.util.ArrayList;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.phantomjs.PhantomJSDriver;
import cn.edu.hfut.dmic.webcollector.crawler.DeepCrawler;
import cn.edu.hfut.dmic.webcollector.model.Links;
import cn.edu.hfut.dmic.webcollector.model.Page;
import com.pad.entity.DiscussInfo;
import com.pad.impl.DiscussInfoImpl; public class DiscussService extends DeepCrawler { public DiscussService(String crawlPath) {
super(crawlPath);
// TODO Auto-generated constructor stub
} @Override
public Links visitAndGetNextLinks(Page page) {
// TODO Auto-generated method stub
WebDriver driver = getWebDriver(page);
Analysis analysis = new Analysis();
List<DiscussInfo> discusslist = new ArrayList();
List<WebElement> list = driver.findElements(By.className("content"));
int i = 1;
String r_msg = "观望";
for(WebElement el : list) {
if(!"".equals(el.getText().trim())){
r_msg = analysis.analysis(el.getText());
} DiscussInfo info = new DiscussInfo();
info.setLine_no(String.valueOf(i));
info.setResult_msg(r_msg);
info.setContent_msg(el.getText());
discusslist.add(info);
System.out.println(i+" "+el.getText());
i++;
}
driver.close();
driver.quit(); DiscussInfoImpl impl = new DiscussInfoImpl();
impl.saveData(discusslist);
return null;
} public static WebDriver getWebDriver(Page page) {
System.setProperty("phantomjs.binary.path", "D:\\******\\phantomjs.exe");
WebDriver driver = new PhantomJSDriver();
driver.get(page.getUrl());
return driver;
} public static void main(String[] args) {
DiscussService dis=new DiscussService("discuss");
     dis.addSeed("https://*******/index/0000012");
try {
dis.start(1);
} catch (Exception e) {
e.printStackTrace();
}
}
}

注意:WebCollector2.12 和WebCollector2.7区别类 extends 继承分别为 DeepCrawler 和 BreadthCrawler;

最新文章

  1. php判断手机还是pc
  2. 007-python基础-pyc是什么
  3. C#在声明对象时对其赋值的一种方式
  4. C#time 闹钟
  5. iOS开发 XML解析和下拉刷新,上拉加载更多
  6. 【BASH】自己主动清理rman脚本备份文件
  7. svn git协同管理
  8. java中的final与static
  9. PKM你的知识需要管理
  10. mysql的if用法解决同一张数据表里面两个字段是否相等统计数据量。
  11. Flexbox弹性布局
  12. dicom学习文章
  13. jquery中Get方法请求接口
  14. npm install 错误 安装 chromedriver 失败的解决办法
  15. OpenBLAS简介及在Windows7 VS2013上源码的编译过程
  16. 使用NodeJsScan扫描nodejs代码检查安全性
  17. 逆袭之旅DAY16.东软实训.Oracle.匿名块
  18. Docker(十二)-Docker Registry镜像管理
  19. CCNA学习与实验指南——第3章 以太网
  20. JDBC之使用配置文件链接数据库

热门文章

  1. iOS开发:iOS中图片与视频一次性多选 - v2m
  2. Android 使用WebView显示网页
  3. Oracle里 用sql*plus 登陆时,用户名和密码是多少啊?
  4. ReactNative For Android 项目实战总结
  5. WEB安全第七篇--终结篇考验逻辑思维:逻辑漏洞大汇总(越权、会话逻辑、业务逻辑、暴力破解)
  6. Spring----学习参考博客书单链接
  7. Linux系统下tomcat安装配置
  8. C/C++ 开放库
  9. LightGBM值参数配置
  10. Oracle安装部署之RAC安装环境配置脚本