最近百度Hi积分8000多了,想用积分换点礼品,但是发现礼品的库存老是0,所以萌发了一个写程序实现查看百度礼品库存的功能。下面的代码将实现定时从网页中截取相关信息。需要类库:htmlparser1_6 的htmlparser.jar下载地址:http://sourceforge.net/projects/htmlparser/files/htmlparser/
RefreshTask.javapackage com.wenjx.assist;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.TimerTask;
import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.filters.NodeClassFilter;
import org.htmlparser.tags.Div;
import org.htmlparser.tags.LinkTag;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;
public class RefreshTask extends TimerTask{
public RefreshTask() {
super();
}
public static String getGiftInfo(String url) throws ParserException{
String result = url;
String temp="";
NodeFilter filter = new NodeClassFilter(Div.class);
Parser parser = new Parser();
parser.setURL(url);
parser.setEncoding(parser.getEncoding());
NodeList list = parser.extractAllNodesThatMatch(filter);
for (int i = 0; i < list.size(); i++) {
Div node = (Div) list.elementAt(i);
String tempName=node.getAttribute("id");
if("giftIntroWrap".equals(tempName)){
result+=node.toPlainTextString();
break;
}
}
String [] strs=result.split("/n");
for(String str:strs ){
if(!("".equals(str))&&!(" ".equals(str)))
temp+=str+"; ";
}
System.out.println(temp);
return temp;
}
@Override
public void run() {
NodeFilter filter = new NodeClassFilter(LinkTag.class);
Parser parser = new Parser();
try {
parser.setURL("http://im.baidu.com/wealth/gift.php");
parser.setEncoding(parser.getEncoding());
NodeList list = parser.extractAllNodesThatMatch(filter);
Set linkSet=new HashSet();
for (int i = 0; i < list.size(); i++) {
LinkTag node = (LinkTag) list.elementAt(i);
String tempLink=node.extractLink();
if(tempLink.contains("giftid=")){
linkSet.add(node.extractLink());
}
}
System.out.println("------------------------"+new Date()+"---------------------------------");
getGiftInfo(linkSet);
System.out.println();
} catch (ParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static String getGiftInfo(Set set) throws ParserException{
Iterator ir=set.iterator();
while(ir.hasNext()){
getGiftInfo((String) ir.next());
}
return null;
}
}