简单的 利用 parser 获取页面信息
来源:互联网 发布:2017机顶盒直播软件 编辑:程序博客网 时间:2024/06/05 12:05
这其实是 要入库 所以 放在了 service层里 还传入了 service对象 因为
好像 spring 不能注入线程里 而且 control里 开了线程 去 获取页面信息 所以传入了 service 对象
获取页面信息的 时候 基础 就是 利用各种不同的 node的过滤器 去 过滤页面信息
过滤出自己需要的信息
<!-- htmlparser -->
<dependency>
<groupId>org.htmlparser</groupId>
<artifactId>htmlparser</artifactId>
<version>1.6</version>
</dependency>
需要的jar包
public class ParserUtil {
public static void start(String surl,AppService as) throws ParserException{Parser parser = new Parser(surl);
parser.setEncoding("UTF-8");
HasAttributeFilter hasAttributeFilter = new HasAttributeFilter("class", "autoword");
NodeList parse = parser.parse(hasAttributeFilter);
for (int i = 0; i < parse.size(); i++) {
String attribute = ((TagNode)parse.elementAt(i)).getAttribute("href");
String url = "http://mm.10086.cn"+attribute;
returnOne(url,as);
}
}
public static void returnOne(String url,AppService as) throws ParserException{
try {
Parser parser = new Parser(url);
parser.setEncoding("UTF-8");
App app = new App();
App_pic app_pic = new App_pic();
//应用名称
NodeFilter tagNameFilter = new TagNameFilter("title");
NodeList titleList = parser.parse(tagNameFilter);
String apptitle = titleList.elementAt(0).toPlainTextString().split("-")[0];
System.out.println("应用名称:"+apptitle);
app.setAppname(apptitle);
//每次都要重置
parser.reset();
parser.reset();
//应用图标
HasAttributeFilter appicon = new HasAttributeFilter("id","appicon");
NodeList iconlist = parser.parse(appicon);
String iconsrc = ((TagNode)iconlist.elementAt(0)).getAttribute("src");
String type = iconsrc.substring(iconsrc.lastIndexOf("."));
String icon = UUID.randomUUID().toString().replaceAll("-","");
String iconname = "d:\\appImg\\"+icon+"-title"+type;
HttpUtil.httpDownload(iconsrc, iconname);
//System.out.println(iconname);
app.setAppicon("/"+icon+ "-title"+type);
parser.reset();
//应用信息
HasAttributeFilter infoFilter = new HasAttributeFilter("class", "mj_info font-f-yh");
HasParentFilter ul = new HasParentFilter(infoFilter);
NodeList parse = parser.parse(ul);
NodeList children = parse.elementAt(0).getChildren();
for (int i = 0; i < children.size()-1; i++) {
if(i==0){
String text = children.elementAt(i).toPlainTextString();
int length = text.length();
text =text.substring(0,length-3);
app.setDownloadNums(text);
//System.out.println(text);
}else if(i==1){
String text = children.elementAt(i).toPlainTextString();
boolean contains = text.contains("¥");
if(contains){
text = text.substring(text.indexOf("¥"));
}else{
text = text.substring(text.length()-2);
}
app.setPrice(text);
}else if(i==2){
String text = children.elementAt(i).toPlainTextString().substring(5);
app.setVersion(text);
//System.out.println(text);
}else if(i==3){
String text = children.elementAt(i).toPlainTextString().substring(5);
app.setFilesize(text);
//System.out.println(text);
}else if(i==5){
String text = children.elementAt(i).toPlainTextString().substring(5);
app.setApptype(text);
//System.out.println(text);
}else if(i==6){
String text = children.elementAt(i).toPlainTextString().substring(5);
//System.out.println(text);
app.setUpdatetime(text);
}else if(i==4){
String text = children.elementAt(i).toPlainTextString();
int indexOf = text.indexOf(":");
String j = text.substring(indexOf+1);
//System.out.println(j);
app.setDeveloper(j);
}else{
String text = children.elementAt(i).toPlainTextString().substring(5);
app.setPlatform(text);
//System.out.println(text);
}
}
parser.reset();
//下载路径
HasAttributeFilter downurlFilter1 = new HasAttributeFilter("title", "下载到本地");
NodeList downlist = parser.parse(downurlFilter1);
String apkurl = "";
if(downlist.size()==0){
apkurl = "此为收费app,请登录下载";
}else{
apkurl = ((TagNode)downlist.elementAt(0)).getAttribute("href");
}
app.setApkurl(apkurl);
parser.reset();
//二维码url
String eid = UUID.randomUUID().toString().replaceAll("-","");
String erwei = "/"+eid+".jpg";
Erer.createQRCode(apkurl,"d:\\appEewei\\"+eid+".jpg",iconname);
//System.out.println(erwei);
app.setCodeurl(erwei);
parser.reset();
//应有介绍 内容
HasAttributeFilter appinfoFilter = new HasAttributeFilter("class","mj_yyjs font-f-yh");
NodeList appinfoList = parser.parse(appinfoFilter);
String appinfo = appinfoList.elementAt(0).toPlainTextString();
//System.out.println(appinfo);
app.setDescription(appinfo);
//
//System.out.println(app);
as.saveApp(app);
//
Integer id = app.getId();
//System.out.println(id);
app_pic.setApp(id);
parser.reset();
//应用介绍图
HasAttributeFilter lunbo = new HasAttributeFilter("class", "mj_img");
HasParentFilter lunboParent = new HasParentFilter(lunbo);
NodeList iconList = parser.parse(lunboParent);
for (int i = 0; i < iconList.size(); i++) {
String attribute = ((TagNode)iconList.elementAt(i)).getAttribute("src");
String houzhui = attribute.substring(attribute.lastIndexOf("."));
String uu = UUID.randomUUID().toString().replaceAll("-","");
String iname = "d:\\appImg\\"+ uu +houzhui;
app_pic.setPicurl("/"+uu+houzhui);
HttpUtil.httpDownload(attribute, iname);
as.saveApp_pic(app_pic);
//System.out.println(app_pic);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
0 0
- 简单的 利用 parser 获取页面信息
- 利用Jsoup获取HTML页面的标签信息
- 简单的天气预报信息获取
- 获取文件的简单信息
- 利用布局简单编写一个安卓手机信息页面
- 利用JavaScript获取客户端的硬件信息
- 利用@value获取配置文件的信息
- Enumeration 在获取页面的信息应用
- 获取客户端及页面的一些信息
- JQUERY获取当前页面的URL信息
- JQUERY获取当前页面的URL信息
- JQUERY获取当前页面的URL信息
- JQUERY获取当前页面的URL信息
- JQUERY获取当前页面的URL信息
- JQUERY获取当前页面的URL信息
- JS获取当前页面的URL信息
- JQUERY获取当前页面的URL信息
- JQUERY获取当前页面的URL信息
- Android微信登录(shareSDK)注意事项
- Eclipse下创建安卓项目时Create Activity—Blank Activity不能下一步,也不能点完成
- LeetCode110:Balanced Binary Tree
- Android 如何改变TextView中个别字样式
- Java集合框架 之Collection接口
- 简单的 利用 parser 获取页面信息
- POJ 3421 X-factor Chains 已被翻译
- spring的事务管理
- Pycharm安装思维导图(脑图)
- 统计字符串长度
- 数组中重复的数字
- Socket编程原理
- openlayers3投影转换——proj4js
- Best Time to Buy and Sell Stock