- 浏览: 155211 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
梁梓程:
GitHub里面的那个sand的代码可以换成java的吗?
浅入浅出游戏粒子系统 -
aa276174247:
楼主好人,求源码研究, 670205373@qq.com
基于java Red5服务器客户端视频聊天室搭起来了 -
07shou:
楼主,小弟最近在学习视频播放,有很多问题,不知可以发份代码学习 ...
基于java Red5服务器客户端视频聊天室搭起来了 -
star245:
能共享出来代码吗,liwen337@163.com
基于java Red5服务器客户端视频聊天室搭起来了 -
lf555:
楼主~~ 何时打算开源呀~~ 借鉴学习下~
打算实现开源网页游戏框架openjpfgame(Java Php flex game),目前实现部分
try
{
mainPage = webClient.getPage(url);
} catch (Exception e)
{
log.error(e.getMessage(), e);
}
if (mainPage != null)
{
HtmlElement paginationContainer = mainPage
.getElementById("paginationContainer");
if (paginationContainer != null)
{
url = url + "/all-1";
try
{
mainPage = webClient.getPage(url);
} catch (Exception e)
{
log.error(e.getMessage(), e);
}
}
HtmlElement categories = mainPage.getElementById("categories");
if (categories == null)
{
HtmlElement products = mainPage.getElementById("products");
if(products!=null)
{
List<HtmlElement> productDivList = products.getElementsByTagName("div");
if(productDivList!=null&&productDivList.size()>0)
{
for(HtmlElement proDiv:productDivList)
{
List<HtmlElement> subList = proDiv.getElementsByTagName("div");
if(subList!=null)
{
for(HtmlElement dt:subList)
{
String classt = dt.getAttribute("class");
if (classt != null && classt.equals("productImg"))
{
List<HtmlElement> subAList = proDiv.getElementsByTagName("a");
if(subAList!=null&&subAList.size()>0)
{
HtmlElement ae=subAList.get(0);
String href = ae.getAttribute("href");
thirdPageUrls.add(href);
}
break;
}
}
}
}
}
}
}
else
{
List<HtmlElement> divList = categories.getElementsByTagName("div");
if (divList != null && divList.size() > 0)
{
for (HtmlElement div : divList)
{
List<HtmlElement> tempDivs = div
.getElementsByTagName("div");
if (tempDivs != null && tempDivs.size() > 0)
{
for (HtmlElement div1 : tempDivs)
{
List<HtmlElement> aList = div1
.getElementsByTagName("a");
HtmlAnchor a = (HtmlAnchor) aList
.get(0);
String link = a.getHrefAttribute();
secondPageUrls.add(link);
}
}
}
}
}
}
}
}
log.error("第二层抓取结束..........");
log.error("目前抓取到的第二层URL个数为:"+secondPageUrls.size());
int count=0;
for (String url : secondPageUrls)
{
count++;
log.error("正在抓取第二层的第"+count+"个URL:"+url);
HtmlPage mainPage = null;
try
{
mainPage = webClient.getPage(url);
} catch (Exception e)
{
log.error(e.getMessage(), e);
}
log.error("抓取URL完成:"+url+",正在分析URL"+url+"+结果的URL");
if (mainPage != null)
{
HtmlElement paginationContainer = mainPage
.getElementById("paginationContainer");
if (paginationContainer != null)
{
url = url + "/all-1";
}
HtmlElement products = mainPage.getElementById("products");
if (products != null)
{
List<HtmlElement> list = products
.getElementsByTagName("div");
;
if (list == null || list.size() == 0)
{
continue;
}
for (HtmlElement h : list)
{
String cls = h.getAttribute("class");
if (cls == null || !cls.equals("productName"))
{
continue;
}
List<HtmlElement> links = h.getElementsByTagName("a");
if (links != null && links.size() > 0)
{
HtmlAnchor htmlAnchor = (HtmlAnchor) links.get(0);
String linkStr = htmlAnchor.getHrefAttribute();
thirdPageUrls.add(linkStr);
log.error(linkStr);
}
}
}
}
}
log.error("第二层抓取结束..........");
secondPageUrls.clear();
secondPageUrls = null;
count=0;
log.error("目前抓取到的第三层URL个数为:"+thirdPageUrls.size());
String urlPrix="http://www.swarovski-crystallized.com/jewelry/us/";
for (String url : thirdPageUrls)
{
count++;
log.error("正在抓取第三层的第"+count+"个URL:"+url);
HtmlPage mainPage = null;
try
{
mainPage = webClient.getPage(url);
} catch (Exception e)
{
log.error(e.getMessage(), e);
}
if (mainPage != null)
{
log.error("抓取URL完成:"+url+",正在分析URL"+url+"+结果");
int indexC=url.indexOf(urlPrix);
int indexD=url.indexOf("?");
String dirStr=url.substring(indexC+urlPrix.length(), indexD);
String regEx = "/";
// Pattern p = Pattern.compile(regEx);
// Matcher m = p.matcher(dirStr);
//哦哦哦,建立文件夹准备把抓到数据放在里面
dirStr=replece( regEx,"\\\\",dirStr);
dirStr = "D:\\swaroski\\"+dirStr;
File file = new File(dirStr);
if(file.isDirectory())
{
dirStr=dirStr+"\\"+count;
file = new File(dirStr);
}
file.mkdirs();
Product product=new Product();
product.setLocalDir(dirStr);
product.setPageUrl(url);
HtmlElement rightCol = mainPage.getElementById("rightCol");
String title = null;
String description = null;
String packingUnit = null;
if (rightCol != null)
{
HtmlElement headlineDiv = rightCol
.getElementById("headline");
if (headlineDiv != null)
。。。。。。。。。。。。。。。。。。。。。。。。
log.error("完成:"+url+",分析结果");
try
{
swaroSkiDAO.addProduct(product);
} catch (Exception e)
{
log.error(e.getMessage(), e);
}
log.error("完成保存结果");
for(String downloadUrl:resourceUrlList)
{
int index6=downloadUrl.lastIndexOf("/");
String fileName=downloadUrl.substring(index6+1);
String dirStr2=dirStr+"\\"+fileName;
File storeFile = new File(fileName);
if(storeFile.exists())
{
continue;
}
SaveFileThread runable=new SaveFileThread(dirStr2,downloadUrl,sem);
pools.submit(runable);
log.error("开始提交下载文件:"+downloadUrl);
try
{
Thread.sleep(2500);
} catch (InterruptedException e)
{
}
}
//啊哈哈,这个就是去拿下图片和动画的线程,结束
class SaveFileThread implements Runnable
{
private String fileName;
private String downloadUrl;
private Semaphore sem;
public SaveFileThread(String fileName,String downloadUrl,Semaphore sem)
{
this.fileName=fileName;
this.downloadUrl=downloadUrl;
this.sem=sem;
}
public void run()
{
HttpClient client = new HttpClient();
GetMethod get = new GetMethod(downloadUrl);
FileOutputStream output=null;
try
{
client.executeMethod(get);
File storeFile = new File(fileName);
output = new FileOutputStream(storeFile);
output.write(get.getResponseBody());
output.flush();
} catch (Exception e)
{
log.error(e.getMessage(), e);
}
发表评论
-
java高速生成大文件的MD5算法
2012-10-27 00:28 0java快速生成大文件的MD5算法import java.io ... -
教你轻松拿下百度音乐播放器mp3地址
2010-09-28 21:23 1086教你轻松拿下百度音乐播放器mp3地址----ldfu2010 ... -
周会&惩罚激励制度
2012-03-21 13:41 0周会 个人很反感开会,因为之前参与过的会议,有80%都是没有 ... -
负载均衡--大型在线系统实现的关键(下篇)
2012-03-21 12:42 0在网络应用中,“负载 ... -
技术主义者的网游观点
2012-03-21 12:06 0大概一年多或者更早以前,我就想过是否能实现单一游戏世界平均同时 ... -
C++中使用Lua脚本 和lua中调用c的方法
2012-03-21 12:04 0参考http://blog.csdn.net/kun12345 ... -
超大地图MMORPG的场景管理
2012-03-21 12:03 0超大地图MMORPG的场景管 ... -
MMORPG开发入门
2012-03-21 11:59 0作者: Radu Privantu 译者:pAnic 20 ... -
服务器宕机
2012-03-21 11:53 0服务器宕机 我不得不承认,我的能力不足以写出一个100% ... -
从腾讯QQgame高性能服务器集群架构看“分而治之”与“自治”等分布式架构设计原则
2012-03-21 11:28 0从腾讯QQgame高性能服务器集群架构看“分而治之”与“自治 ... -
一种经典的服务器架构
2012-03-21 11:27 0一种经典的服务器架构 ... -
一个AS3 socket解码设计的错误思路
2012-03-20 17:34 0一个AS3 socket解码设计的错误思路 作者:闪刀 ... -
FLASH端SOCKET连接C++服务端代码
2012-03-20 16:55 0FLASH端S 最近在开发一个休闲类的游 ... -
java并发分析as3中的无用css样式
2012-03-12 16:19 0java并发分析as3中的无用css样式 -
java连接SSH服务器并执行shell命令
2012-03-09 18:27 0前要通过java连接到SSH服务器并执行一些linux配置命令 ... -
ant + jsch 远程发布web工程
2012-03-09 18:08 0<?xml version="1.0&quo ... -
nio支持epoll
2012-03-05 11:52 0<project name="xiyou&qu ... -
游戏中用户点击不可达地点引起寻路循环,游戏停顿问题解决
2011-11-20 18:36 1886游戏中用户点击不可达地点引起寻路循环,游戏停顿问题解决 ... -
apache common-dbutils 的使用
2011-06-08 14:46 0package demo.dbutilsdemo; i ... -
用Varnish搭建Cache服务
2011-06-07 15:57 0用Varnish搭建Cache服务器 - [技术笔记] ...
相关推荐
在实际使用HttpClient和HtmlUnit结合处理文件下载时,开发者通常会先用HttpClient建立与服务器的连接,然后通过HttpClient发送请求到文件的URL。HtmlUnit则可以在JavaScript执行的环境中触发文件下载,或者模拟用户...
<artifactId>httpclient</artifactId> <version>4.5.13</version> </dependency> ``` 接下来,我们创建一个HttpClient实例,并设置必要的参数。这可能包括连接超时、读取超时等。例如: ```java import org....
<artifactId>htmlunit</artifactId> <version>2.38.0</version> </dependency> ``` 2. **创建WebClient**:使用`WebClient`类初始化一个新的客户端实例。你可以设置各种选项,如JavaScript支持、cookies管理等...
- HTMLUnit是一个开源项目,基于Jakarta HttpClient和 Rhino JavaScript引擎,能够模拟浏览器进行网页加载和交互。 - 它支持HTTP协议,能够处理cookies,重定向,并支持基本和digest身份验证。 - HTMLUnit提供了...
HtmlUnitDriver ... < artifactId>htmlunit-driver</ artifactId> < version>2.49.1</ version> </ dependency> 用法 简单的 您可以简单地使用HtmlUnit驱动程序类中的构造函数之一 // simple case - no j
HTMLUnit使用HttpClient来处理网络通信,包括GET和POST请求,设置请求头,处理重定向等。版本4.5.2提供了一套完整的HTTP协议实现,支持HTTPS和各种HTTP特性。 4. **xml-apis-1.4.01.jar**:这是一个XML API的集合,...
总的来说,HTMLUnit是一个强大的工具,可以帮助开发者构建高效的Java爬虫,同时提供了对JavaScript支持,使得爬取和交互复杂的动态网站成为可能。结合httpmime库,它可以处理各种HTTP通信需求,为网络爬虫提供全面的...
<artifactId>htmlunit</artifactId> <version>2.48.0</version> </dependency> 概述 HtmlUnit是“用于Java程序的GUI更少的浏览器”。 它为HTML文档建模,并提供一个API,使您可以调用页面,填写表单,单击链接等,...
5. **CSS解析**: 对于CSS的支持,HTMLUnit使用了Cascading Style Sheets (CSS) Object Model (CSOM)来解析和应用CSS规则。 6. **异常处理和模拟**: HTMLUnit还包含了各种模拟浏览器行为的组件,如模拟点击、填写...
本主题主要关注如何使用`httpclient4.*`库来绕过验证码获取公司信息,以及结合`jsoup`解析静态网页信息和`htmlUnit`处理动态网站的抓取。以下是对这些知识点的详细说明: 1. **httpclient4.***: Apache HttpClient...
HTMLUnit是一个Java库,它提供了一个无头浏览器模拟器,用于自动化Web页面的测试和交互。这个"htmlunit基本jar包"包含了运行HTMLUnit所需的所有核心组件,无需通过Maven来管理和依赖。这意味着用户可以直接在项目中...
HTMLUnit是一个Java库,模拟一个无头Web浏览器,主要用于自动化测试和网页抓取。它能够解析HTML、执行JavaScript,并返回用户可以操作的DOM元素。在Java应用中使用HTMLUnit,通常需要依赖一系列的JAR(Java Archive...
在这个"javahtmlunit爬虫案例入门"中,我们将深入探讨如何使用Java和HtmlUnit库来实现一个简单的电商网站爬虫,同时下载对应的图片。 首先,HtmlUnit是一个无头浏览器模拟器,它允许程序员在Java环境中执行...
HTMLUnit是一个Java库,它提供了一个无头浏览器模拟器,用于自动化Web页面的导航和交互。这个库在测试、数据抓取以及不需图形用户界面的场景中非常有用。"htmlUnit所需jar包"的标题表明这是一个包含HTMLUnit运行所需...
总之,HTMLUnit 2.23提供了一个强大且高效的工具,适用于自动化测试和网页抓取,特别是对于那些依赖JavaScript的动态网站。通过理解和熟练使用这个库,开发者可以构建出精确、灵活的网页数据提取系统。
HTMLUnit是一个Java库,它提供了一个无头浏览器模拟器,用于自动化网页测试和网页抓取。...它对于进行功能测试、性能测试或者需要...在使用HTMLUnit时,确保这些依赖项完整并正确配置,可以避免许多运行时错误和功能缺失。
这个“htmlunit-2.3.zip”压缩包包含了运行和使用HTMLUnit所需的所有核心组件。 在深入探讨HTMLUnit之前,我们首先了解一下单元测试的概念。单元测试是软件开发过程中的一个重要环节,它允许开发者针对程序中的最小...
HTMLUnit是一个Java库,它提供了一个无头浏览器模拟器,用于自动化Web页面的测试和交互。这个库的主要优点是它可以解析HTML、执行JavaScript,并且能够处理CSS,而无需实际显示任何图形界面。在Java项目中,HTMLUnit...
2. **JavaScript支持**:HTMLUnit能够理解和执行JavaScript代码,这对于测试动态生成的内容或者依赖JavaScript的网站至关重要。它内置了 Rhino 和 Netty JavaScript 引擎,支持ECMAScript 5.1。 3. **DOM操作**:...