开始时间: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("/^ $/", ""));
uptd.setSjage(strjs[1]);
uptd.setBl1(data.get("trackNums"));
if(trackinfo[1]==null)
{
System.out.println("没有签收人,未执行更新");
}
System.out.println(strs[1].replaceAll("/^ $/", "")+"运送日期");
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;
}
不知道到底哪里错了 求解决
相关推荐
Java网页抓取数据是互联网数据挖掘的一个重要领域,它允许开发者通过编程方式获取网页上的信息,从而实现自动化分析、监控或构建智能应用。在Java中,我们通常使用HTTP客户端库和HTML解析工具来实现这一目标。本文将...
这个"java网页抓取demo"项目提供了实现这一功能的实例代码。项目中的jar包是实现网页抓取的关键依赖库,包括Apache Commons Logging和HTTP Client。 Apache Commons Logging是Java的日志记录工具,它为应用程序提供...
java项目之WebSpider蓝蜘蛛网页抓取java项目之WebSpider蓝蜘蛛网页抓取java项目之WebSpider蓝蜘蛛网页抓取java项目之WebSpider蓝蜘蛛网页抓取java项目之WebSpider蓝蜘蛛网页抓取java项目之WebSpider蓝蜘蛛网页抓取
Java网页抓取数据是互联网开发中的一个重要技能,它允许开发者从网页中提取所需的信息,如新闻、产品数据或用户评论,以供进一步分析或利用。本主题主要涵盖以下几个关键知识点: 1. **网络请求库**:在Java中,...
在这个Java实现网页抓取的项目中,我们将探讨如何利用Java编程语言来抓取网页内容。下面将详细介绍这个过程涉及的关键知识点。 1. **网络基础知识**:首先,理解HTTP协议是必要的,它是互联网上应用最广泛的一种...
### 网页抓取DEMO-可以运行的一个Java项目 #### 一、项目概述 本文档介绍了一个简单的网页抓取Java项目示例,适用于希望了解网页抓取基本原理及实现方式的学习者。通过本项目,你可以学习如何利用Java语言进行网络...
Java Web网站抓取其他网站内容是一项常见的技术需求,主要用于数据挖掘、信息聚合或者自动化测试等场景。本篇文章将深入探讨如何使用Java在Web环境中抓取其他网站的数据。 首先,我们需要了解的是网页抓取的基本...
java程序,能进行简单的网页抓取,及数据抓取,里面还有火车采集器的内容
本文将详细讨论如何使用Java语言来抓取网页数据,包括两种主要方法:直接抓取原网页内容和处理网页中的JavaScript返回数据。 首先,让我们探讨**抓取原网页**的方法。在Java中,我们可以使用`java.net.URL`类来建立...
在“java抓取网页数据”这个主题中,我们将深入探讨如何利用Java来抓取并处理互联网上的信息。 首先,我们要了解什么是网络爬虫。网络爬虫(Web Crawler)是自动遍历互联网的程序,通过抓取网页内容并存储在本地,...
java抓取网页数据,主要用于抓取手机号和身份证查询网站的数据。
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)
一、系统启动后在“抓取网页路径” 输入要抓取网页的URL 以文本内默认格式输入 选择“网页编码格式” (如果不知道网页格式可以更换不同选择项),然后点击“测试打开网页”。系统会 在页面右侧空白处显示页面源码...
Java网络爬虫是一种自动化程序,用于从互联网上抓取大量数据。它的工作原理是模拟浏览器发送HTTP请求到服务器,接收响应,并解析返回的HTML或XML文档以提取所需信息。在这个过程中,HttpClient是一个常用的Java库,...
java简单的抓取网页内容的程序java简单的抓取网页内容的程序java简单的抓取网页内容的程序java简单的抓取网页内容的程序java简单的抓取网页内容的程序java简单的抓取网页内容的程序java简单的抓取网页内容的程序java...
java抓取网页java工具类java抓取网页java工具类
Java作为一种广泛应用的编程语言,提供了多种库来实现网页抓取。本篇将重点讲解如何利用HTMLParser库在Java中抓取网页数据。 HTMLParser是Java的一个开源库,专门用于解析HTML文档,提取其中的数据。它的设计目标是...
在Java编程语言中,抓取网页内容是一项常见的任务,尤其对于数据分析、信息提取以及网络爬虫等应用场景。本文将深入探讨如何使用Java实现简单的网页内容抓取,适合初学者入门学习。 首先,我们需要理解网页抓取的...
综上所述,"WebSpider蓝蜘蛛网页抓取 v5.1" 是一个基于JSP的网页抓取工具,它的源码可以作为学习JSP、Java和SQL的实践案例,尤其适合学生进行毕业设计或课程设计。通过分析和修改源码,学生不仅可以掌握网页爬虫的...
Java实现WebSpider,也被称为网络爬虫或网页抓取,是一种自动浏览互联网并提取网页信息的技术。在本项目中,"蓝蜘蛛"是这个爬虫程序的代号,它使用Java编程语言进行开发。Java因其跨平台性、稳定性和丰富的库支持,...