0 0

不显示删除回复显示所有回复显示星级回复显示得分回复 java网页抓取后部署web项目 一直报路径错误0

开始时间:2012-07-06 09:25:00 共需查询:716条 HTTP/1.1 200 OK
java.net.MalformedURLException: unknown protocol: c
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at org.cyberneko.html.HTMLScanner.setInputSource(HTMLScanner.java:860)
at org.cyberneko.html.HTMLConfiguration.setInputSource(HTMLConfiguration.java:478)
at org.cyberneko.html.HTMLConfiguration.parse(HTMLConfiguration.java:451)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at com.rensanning.M1Job.getHiddenValue(M1Job.java:215)
at com.rensanning.M1Job.execute(M1Job.java:78)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529)

public class BaseServelet extends HttpServlet {
public void init() throws ServletException {  
super.init();
M1Job.ROOT_PATH = getServletContext().getRealPath("/");
System.out.println(M1Job.ROOT_PATH);
System.out.println(M1Job.ROOT_PATH+"html");
File file = new File(M1Job.ROOT_PATH+"html");
if (!file.exists()) {
file.mkdirs();
}
__startJob();  
}
private void __startJob() {
try {
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
//每天7点钟扫描一次
String sconf1m = "0 25 9 * * ?";
M1Job m1job = new M1Job();
JobDetail job1m = new JobDetail("job1m", "group1m", m1job.getClass());
CronTrigger trigger1m = new CronTrigger("trigger1m", "group1m", "job1m", "group1m", sconf1m);
sched.addJob(job1m, true);
sched.scheduleJob(trigger1m);
sched.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public class M1Job implements Job {
public static String ROOT_PATH = "";
private static final String HTML_TACK_HTML = "html\\tack.html";
private static final String HTML_DETAIL_HTML = "html\\detail.html";
private static String url1 = "http://wwwapps.ups.com/WebTracking/track?HTMLVersion=5.0&loc=zh_CN&Requester=UPSHome&WBPM_lid=homepage%2Fct1.html_pnl_trk&trackNums=#TRACK_NUM#&track.x=%E8%BF%BD%E8%B8%AA"; 
private static String url2 = "http://wwwapps.ups.com/WebTracking/detail"; 
public final void execute(JobExecutionContext context)
throws JobExecutionException {
System.out.println("开始时间:"+getCurrentTime());
UpsDao upsdao = new UpsDao();
TdmxDao tddao = new TdmxDao();  
List<Tdmx> listtd = tddao.searchTdmx();  
for(int i=0; i<listtd.size();i++){  
Tdmx td = listtd.get(i);  
System.out.println("共需查询:"+listtd.size()+"条");
String url1new = url1.replace("#TRACK_NUM#", td.getBl1().trim()); //URL替换的运单参数
String jbno = td.getJbno(); //工作编号  
//如果upstrac表有相对记录,先执行删除
if(upsdao.DeleteUpstrace(jbno)>0)
{
upsdao.DeleteUpstrace(jbno);
}  
try {  
//抓取追踪信息页面HTML  
getHtml(url1new, ROOT_PATH+HTML_TACK_HTML, null);  
//获取 抓取运输进程页面HTML时 需要的参数  
Map<String, String> data = getHiddenValue(ROOT_PATH+HTML_TACK_HTML);  
if (data.get("trackNums") == null) {
continue;
}  
//抓取运输进程页面HTML  
getHtml(url2, ROOT_PATH+HTML_DETAIL_HTML, data);  
//获取运输进程  
List<DetailBean> list = getDetailList(ROOT_PATH+HTML_DETAIL_HTML);  
//打印详细的运输进程  
DetailBean bean = null;  
System.out.println("地点" + "\t" + "日期" + "\t" + "当地时间" + "\t" + "处理");  
for (int j = 0; j < list.size(); j++) {  
bean = list.get(j);  
System.out.println(bean.getLocation() + "\t" + bean.getDate() + "\t" + bean.getTime() + "\t" + bean.getOperation());  
DetailBean db = new DetailBean();  
db.setJbno(jbno);
db.setBl1(data.get("trackNums"));  
db.setLocation(bean.getLocation());  
String str =bean.getDate()+" "+bean.getTime();  
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm");  
Date date = sdf.parse(str);  
java.sql.Timestamp sqlDate = new java.sql.Timestamp(date.getTime());  
db.setDate1(sqlDate);  
db.setOperation(bean.getOperation());  
upsdao.AddUpstrace(db);  
}  
String[] trackinfo = getTrackInfo(ROOT_PATH+HTML_TACK_HTML);
Tdmx uptd = new Tdmx();
String str = trackinfo[0];
String[] strs = str.split("[:]");
String strj = trackinfo[1];
String[] strjs = strj.split("[:]");
uptd.setBlagent(strs[1].replaceAll("/^&nbsp;$/", ""));
uptd.setSjage(strjs[1]);
uptd.setBl1(data.get("trackNums"));
if(trackinfo[1]==null)
{
System.out.println("没有签收人,未执行更新");
}
System.out.println(strs[1].replaceAll("/^&nbsp;$/", "")+"运送日期");
System.out.println(strjs[1]+"签收人");
tddao.UpdateTdmx(uptd);
System.out.println("执行更新");
System.out.println("结束时间:"+getCurrentTime());
} catch (Exception e) {  
e.printStackTrace();  
}  
}  
}
private static List<DetailBean> getDetailList(String html) throws Exception {
List<DetailBean> list = new ArrayList<DetailBean>();
DOMParser parser = new DOMParser();
parser.parse(html.replaceAll("/", "\\\\"));
Node node = parser.getDocument();
Node tb = XPathAPI.selectSingleNode(node, "//TABLE[@class='dataTable']");
if (tb == null) {
return list;
}
NodeList tdlist = XPathAPI.selectNodeList(tb, "//TR/TD");
int line = 0;
while (line < tdlist.getLength() / 4) {
DetailBean bean = new DetailBean();
bean.setLocation(deleteSpace(tdlist.item(line * 4 + 0).getTextContent()));
bean.setDate(deleteSpace(tdlist.item(line * 4 + 1).getTextContent()));
bean.setTime(deleteSpace(tdlist.item(line * 4 + 2).getTextContent()));
bean.setOperation(deleteSpace(tdlist.item(line * 4 + 3).getTextContent()));
line++;
list.add(bean);
}
return list;
}
private static String removeSpace(String in) {
char[] charArray = in.toCharArray();  
for (int i = 0; i < charArray.length; i++) {
if (charArray[i] == (char)160) {
charArray[i] = (char)32;
}
}
return new String(charArray);
}
private static String[] getTrackInfo(String html) throws Exception {  
DOMParser parser = new DOMParser();
parser.parse(html.replaceAll("/", "\\\\"));
Node node = parser.getDocument();  
NodeList dllist = XPathAPI.selectNodeList(node, "//DL");  
String[] result = new String[5];  
//--运送日期
result[0] = removeSpace(deleteSpace(dllist.item(2).getTextContent()));
// result[0] = deleteSpace(dllist.item(2).getTextContent());
//--签收人
if(dllist.getLength() == {
result[1] = deleteSpace(dllist.item(4).getTextContent());
} else {
result[1] = deleteSpace(dllist.item(3).getTextContent());
}  
return result;
}
private static Map<String, String> getHiddenValue(String html) throws Exception {
Map<String, String> data = new HashMap<String, String>();
List<String> params = new ArrayList<String>();
params.add("loc".toLowerCase());
params.add("USER_HISTORY_LIST".toLowerCase());
params.add("progressIsLoaded".toLowerCase());
params.add("refresh_sii".toLowerCase());
params.add("showSpPkgProg1".toLowerCase());
params.add("datakey".toLowerCase());
params.add("HIDDEN_FIELD_SESSION".toLowerCase());
params.add("trackNums".toLowerCase());
DOMParser parser = new DOMParser();
parser.parse(html.replaceAll("/", "\\\\"));
Node node = parser.getDocument();
NodeList nodeList = XPathAPI.selectNodeList(node, "//INPUT");
for (int i = 0; i < nodeList.getLength(); i++) {
Element e = (Element) nodeList.item(i);
if ("hidden".equalsIgnoreCase(e.getAttribute("type"))
&& params.contains(e.getAttribute("name").toLowerCase())) {
data.put(e.getAttribute("name"), e.getAttribute("value"));
}
}
System.out.println("运单编号:" + data.get("trackNums"));
return data;
}

不知道到底哪里错了 求解决
2012年7月06日 09:37

1个答案 按时间排序 按投票排序

0 0

配置里面的路径问题吧。。。

看看有没有中文,然后c:\\是不是写成了c://之类的

2012年7月06日 10:26

相关推荐

    java网页抓取数据

    Java网页抓取数据是互联网数据挖掘的一个重要领域,它允许开发者通过编程方式获取网页上的信息,从而实现自动化分析、监控或构建智能应用。在Java中,我们通常使用HTTP客户端库和HTML解析工具来实现这一目标。本文将...

    java网页抓取demo

    这个"java网页抓取demo"项目提供了实现这一功能的实例代码。项目中的jar包是实现网页抓取的关键依赖库,包括Apache Commons Logging和HTTP Client。 Apache Commons Logging是Java的日志记录工具,它为应用程序提供...

    java项目之WebSpider蓝蜘蛛网页抓取.zip

    java项目之WebSpider蓝蜘蛛网页抓取java项目之WebSpider蓝蜘蛛网页抓取java项目之WebSpider蓝蜘蛛网页抓取java项目之WebSpider蓝蜘蛛网页抓取java项目之WebSpider蓝蜘蛛网页抓取java项目之WebSpider蓝蜘蛛网页抓取

    Java网页抓取数据

    Java网页抓取数据是互联网开发中的一个重要技能,它允许开发者从网页中提取所需的信息,如新闻、产品数据或用户评论,以供进一步分析或利用。本主题主要涵盖以下几个关键知识点: 1. **网络请求库**:在Java中,...

    Java实现网页抓取

    在这个Java实现网页抓取的项目中,我们将探讨如何利用Java编程语言来抓取网页内容。下面将详细介绍这个过程涉及的关键知识点。 1. **网络基础知识**:首先,理解HTTP协议是必要的,它是互联网上应用最广泛的一种...

    网页抓取DEMO-可以运行的一个java项目

    ### 网页抓取DEMO-可以运行的一个Java项目 #### 一、项目概述 本文档介绍了一个简单的网页抓取Java项目示例,适用于希望了解网页抓取基本原理及实现方式的学习者。通过本项目,你可以学习如何利用Java语言进行网络...

    java web网站常用抓取其他网站内容

    Java Web网站抓取其他网站内容是一项常见的技术需求,主要用于数据挖掘、信息聚合或者自动化测试等场景。本篇文章将深入探讨如何使用Java在Web环境中抓取其他网站的数据。 首先,我们需要了解的是网页抓取的基本...

    java进行网页抓取

    java程序,能进行简单的网页抓取,及数据抓取,里面还有火车采集器的内容

    Java抓取网页数据Demo

    本文将详细讨论如何使用Java语言来抓取网页数据,包括两种主要方法:直接抓取原网页内容和处理网页中的JavaScript返回数据。 首先,让我们探讨**抓取原网页**的方法。在Java中,我们可以使用`java.net.URL`类来建立...

    java抓取网页数据

    在“java抓取网页数据”这个主题中,我们将深入探讨如何利用Java来抓取并处理互联网上的信息。 首先,我们要了解什么是网络爬虫。网络爬虫(Web Crawler)是自动遍历互联网的程序,通过抓取网页内容并存储在本地,...

    java网页数据抓取源代码

    java抓取网页数据,主要用于抓取手机号和身份证查询网站的数据。

    Java抓取https网页数据

    Java抓取https网页数据,解决peer not authenticated异常。导入eclipse就能运行,带有所用的jar包(commons-httpclient-3.1.jar,commons-logging.jar,httpclient-4.2.5.jar,httpcore-4.2.4.jar)

    ASP.NET 网页抓取WEB版

    一、系统启动后在“抓取网页路径” 输入要抓取网页的URL 以文本内默认格式输入 选择“网页编码格式” (如果不知道网页格式可以更换不同选择项),然后点击“测试打开网页”。系统会 在页面右侧空白处显示页面源码...

    java网络爬虫抓取网页数据

    Java网络爬虫是一种自动化程序,用于从互联网上抓取大量数据。它的工作原理是模拟浏览器发送HTTP请求到服务器,接收响应,并解析返回的HTML或XML文档以提取所需信息。在这个过程中,HttpClient是一个常用的Java库,...

    java简单的抓取网页内容的程序

    java简单的抓取网页内容的程序java简单的抓取网页内容的程序java简单的抓取网页内容的程序java简单的抓取网页内容的程序java简单的抓取网页内容的程序java简单的抓取网页内容的程序java简单的抓取网页内容的程序java...

    java抓取网页-java工具类

    java抓取网页java工具类java抓取网页java工具类

    java利用htmlparser抓取网页数据

    Java作为一种广泛应用的编程语言,提供了多种库来实现网页抓取。本篇将重点讲解如何利用HTMLParser库在Java中抓取网页数据。 HTMLParser是Java的一个开源库,专门用于解析HTML文档,提取其中的数据。它的设计目标是...

    java简单抓取网页内容

    在Java编程语言中,抓取网页内容是一项常见的任务,尤其对于数据分析、信息提取以及网络爬虫等应用场景。本文将深入探讨如何使用Java实现简单的网页内容抓取,适合初学者入门学习。 首先,我们需要理解网页抓取的...

    [其他类别]WebSpider蓝蜘蛛网页抓取 v5.1_webspider.rar

    综上所述,"WebSpider蓝蜘蛛网页抓取 v5.1" 是一个基于JSP的网页抓取工具,它的源码可以作为学习JSP、Java和SQL的实践案例,尤其适合学生进行毕业设计或课程设计。通过分析和修改源码,学生不仅可以掌握网页爬虫的...

    java实现WebSpider蓝蜘蛛网页抓取.zip

    Java实现WebSpider,也被称为网络爬虫或网页抓取,是一种自动浏览互联网并提取网页信息的技术。在本项目中,"蓝蜘蛛"是这个爬虫程序的代号,它使用Java编程语言进行开发。Java因其跨平台性、稳定性和丰富的库支持,...

Global site tag (gtag.js) - Google Analytics