博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java之网络爬虫WebCollector2.1.2+selenium2.44+phantomjs2.1.1
阅读量:4596 次
发布时间:2019-06-09

本文共 2846 字,大约阅读时间需要 9 分钟。

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
discusslist = new ArrayList(); List
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;

 

转载于:https://www.cnblogs.com/lizm166/p/9376369.html

你可能感兴趣的文章
STM32F0使用LL库实现SHT70通讯
查看>>
Atitit. Xss 漏洞的原理and应用xss木马
查看>>
MySQL源码 数据结构array
查看>>
(文件过多时)删除目录下全部文件
查看>>
T-SQL函数总结
查看>>
python 序列:列表
查看>>
web移动端
查看>>
pythonchallenge闯关 第13题
查看>>
linux上很方便的上传下载文件工具rz和sz使用介绍
查看>>
React之特点及常见用法
查看>>
【WEB前端经验之谈】时间一年半,或沉淀、或从零开始。
查看>>
优云软件助阵GOPS·2017全球运维大会北京站
查看>>
linux 装mysql的方法和步骤
查看>>
poj3667(线段树区间合并&区间查询)
查看>>
51nod1241(连续上升子序列)
查看>>
SqlSerch 查找不到数据
查看>>
集合相关概念
查看>>
Memcache 统计分析!
查看>>
(Python第四天)字符串
查看>>
个人介绍
查看>>