package com.hym.io;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.Node;
public class GetNewBKPlayerPhoto {
private final static String PLAYER_BET_ID_PATH = "E:\\work\\2014\\basketball\\20140116_photo\\PlayerBetId2.txt";
private final static String PLAYER_XML_PATH = "E:\\work\\2014\\basketball\\20140116_photo\\LqPlayer_xml.xml";
private final static String PLAYER_NO_PHOTO_PATH = "E:\\work\\2014\\basketball\\20140116_photo\\noPhoto3.txt";
private final static String localPath = "E:\\work\\2014\\basketball\\20140116_photo\\bkPlayerPhoto3";
public static void main(String[] args) {
System.out.println("downloaded begin ...... ");
GetNewBKPlayerPhoto getPhoto = new GetNewBKPlayerPhoto();
List<String> noPhotoList = getPhoto.downLoadPhoto();
try {
FileUtils.writeLines(new File(PLAYER_NO_PHOTO_PATH), noPhotoList);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("downloaded end ...... ");
}
public List<String> getNewPlayerBetId() {
try {
//File file = new File(PLAYER_BET_ID_PATH);
//List<String> betIds = FileUtils.readLines(file);
List<String> betIds = new ArrayList<String>();
for (int i = 3791; i<= 4013; i++) {
betIds.add(String.valueOf(i));
}
return betIds;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public Map<String, String> getBetIdPhotoMap() {
List<String> playerBetIdList = getNewPlayerBetId();
Map<String, String> betIdPhotoMap = new HashMap<String, String>();
String xml;
try {
xml = FileUtils
.readFileToString(new File(PLAYER_XML_PATH), "utf-8");
Element root = getRoot(xml);
for (String betId : playerBetIdList) {
String photo = getNodeAttribute(root, "i", "Photo", "id", betId);
betIdPhotoMap.put(betId, photo);
}
} catch (IOException e) {
e.printStackTrace();
}
return betIdPhotoMap;
}
public List<String> downLoadPhoto() {
List<String> noPhotoList = new ArrayList<String>();
Map<String, String> betIdPhotoMap = getBetIdPhotoMap();
if (betIdPhotoMap != null && !betIdPhotoMap.isEmpty()) {
Set<String> keySet = betIdPhotoMap.keySet();
Iterator<String> iter = keySet.iterator();
while (iter.hasNext()) {
String betId = iter.next();
String photo = betIdPhotoMap.get(betId);
if (StringUtils.isEmpty(photo) || photo.indexOf("no") > -1) {
noPhotoList.add(betId);
continue;
}
downBKPlayerPhoto(betId, photo);
System.out.println("downloaded betId = " + betId + ", photo = " + photo);
}
}
return noPhotoList;
}
private Element getRoot(String xml) {
try {
Document doc = DocumentHelper.parseText(xml);
Element root = doc.getRootElement();
return root;
} catch (DocumentException e) {
e.printStackTrace();
}
return null;
}
public String getNodeAttribute(Element root, String nodeName,
String attrName, String key, String value) {
List<Node> nodes = root.selectNodes("//" + nodeName + "[" + key + "='"
+ value + "']");
if (nodes == null || nodes.isEmpty()) {
return null;
}
return nodes.get(0).valueOf(attrName);
}
public void downBKPlayerPhoto(String betId, String photo) {
String webSite = "http://nba.xxx.com";
// 一个一个下载照片,并写入本地
String suffix = photo.substring(photo.lastIndexOf("."));
URL url;
try {
url = new URL(webSite + photo);
File file = new File(localPath + "\\" + betId + suffix);
FileUtils.copyURLToFile(url, file);
} catch (Exception e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
官方离线安装包,亲测可用
BIT-101 XPath Query Tool XML查询工具
《XML》实验任务书 【3】 XPath & XSLT [实验目的] 1、学习如何使用XMLSPY集成开发环境执行XPath查询、以及XSLT的数据转换。 2、理解XPath的类型系统和序列类型等相关概念,掌握XPath表达式语法和执行语义,能够...
Xpath(XML Path Language)则是用来在XML文档中查找信息的语言,它允许我们通过路径表达式来选取节点,如元素、属性、文本等。在本主题中,我们将深入探讨基于Xpath的XML文件查询和更新。 **Xpath基本概念** 1. *...
1. 更换默认的xpath库 除了ie,其他主要浏览器都是内置对xpath的支持的,但ie不行,所以selenium 使用了javascript库,默认使用的是ajaxslt,这个会比较慢,可以换成 javascript-xpath, 虽然比firefox还是慢...
XPath是XML文档中查找信息的语言,它允许我们高效地定位到XML文档中的特定节点,如元素、属性或文本。在Java编程中,JDOM库是一个流行的解析和操作XML的工具,它提供了对XPath的支持,使得我们可以方便地通过XPath...
在"JSTL-XML-Xpath"这个主题中,我们可以看到JSTL是如何集成XML处理和XPath查询的。JSTL的`<c:import>`和`<x:parse>`标签用于导入XML文档并将其解析为JDOM或DOM对象。接着,`<x:path>`标签可以用来执行XPath表达式,...
本篇将深入探讨如何在Java中利用XPath来提取XML文档中的数据,以及相关的实现步骤和关键知识点。 首先,理解XPath的基本概念至关重要。XPath使用路径表达式来选取XML文档中的节点。这些路径表达式类似于文件系统中...
离线安装包,亲测可用
2. `xpath-expression.xslt`案例演示了不同路径表达式的用法,如选取BookList的所有子节点、根元素、特定子元素、所有同名子元素、任意位置的后代元素以及特定属性。 代码实现中,`xsl:apply-templates`与`xsl:...
wicked-good-xpath, 纯JS实现DOM级别 3 XPath规范 很好的XPath Wicked XPath是谷歌编写的DOM级别 3 XPath规范的纯JavaScript实现。 它为每个浏览器中的HTML文档启用XPath评估。 我们相信它是JavaScript中最快的XPath...
XMLDOM(XML Document Object Model)是微软开发的一种用于处理XML文档的API,它允许程序员通过JavaScript或其他编程语言在客户端或服务器端对XML数据进行读取、修改和操作。XMLDOM将XML文档转换为一个可遍历的对象...
XPath是一种在XML文档中查找信息的语言,它是XML处理中的重要工具。XML(eXtensible Markup Language)是一种标记语言,常用于数据交换和存储。CSV(Comma Separated Values)文件则是一种简单、通用的数据格式,...
通过`select()`函数,你可以执行XPath查询,并返回匹配的元素列表。这样,你可以方便地遍历和操作XML文档的各个部分。 **总结** `py_dom_xpath_six`库结合了XPath和DOM的概念,为Python开发者提供了一个高效且易于...
在本篇文章中,我们将深入探讨如何利用XPath来解析XML文件,并且会提及如何通过XPath操作Map集合,从而避免过多地生成Java Bean类。 首先,理解XML文档的结构至关重要。XML是一种标记语言,用于存储数据,其结构...
XSLT基于XPath,通过模板匹配和样式规则,将源XML文档转换为目标格式。XSLT提供了控制流、变量、函数库等编程特性,使得XML数据的呈现和处理更具灵活性。 5. **XSLT与XPath的应用** - 数据检索:XPath用于在XML...
XPath,全称XML Path Language,是一种在XML文档中查找信息的语言。它被设计用来选取XML文档中的节点,如元素、属性、文本等。XPath使用路径表达式来选取节点,类似于我们在网页浏览器中输入URL来访问特定页面的方式...
本篇文章将深入探讨如何使用Dom4j,一个流行的Java库,结合XPath来解析XML文件中的路径表达式,同时阐述相对路径和绝对路径的匹配原则。 首先,我们要了解Dom4j库。Dom4j是一个灵活且高效的处理XML的Java库,它提供...
在处理XML时,我们通常会使用三种主要的解析方式:DOM(Document Object Model)、SAX(Simple API for XML)和XPath(XML Path Language)。下面将详细介绍这三种解析方法,并结合实例进行讲解。 1. DOM解析: DOM...