最近这两天我做了个
最新电影网的视频网站,主要是从土豆抓取来的.所以
内容页就是框架,不便于搜索的抓取。所以我就想加些相关内容,像这样的
内容
由于我就是通过百度搜索关键字来填充内容。下面就是我通过htmlParser抓取的代码。
由于我就是通过百度搜索关键字来填充内容。下面就是我通过htmlParser抓取的代码。
public
class
BaiduResultAction
extends
BaseAction
{
public static final Logger logger = Logger
.getLogger(BaiduResultAction.class);
/**
* 组装新闻
*
* @param url
* @return
*/
public String compNews(String url) {
String returnContent = null;
try {
ParserModel parserModel = new ParserModel();
//table 的抓取标签
String content = "border=/"0/" cellpadding=/"0/" cellspacing=/"0/"";
parserModel.setContent(content);
NodeClassNameFilter contentNodeClassNameFilter = new NodeClassNameFilter(
TableTag.class, parserModel);
NodeList contentList = getAllNodeList(url,
contentNodeClassNameFilter);
// 对table的处理 只取第一个table中的一项记录
//如果全部抓取内容,则要去掉最后一个break;
for (int i = 1; i < contentList.size(); i++) {
if (contentList.elementAt(i) instanceof TableTag) {
TableTag tableContent = (TableTag) contentList
.elementAt(i);
int rowCount = tableContent.getRowCount();
TableRow[] arrRows = tableContent.getRows();
for (int j = 0; j < arrRows.length; j++) {
TableRow tableRow = arrRows[j];
TableColumn[] arrColumm = tableRow.getColumns();
for (int k = 0; k < arrColumm.length; k++) {
String columContent = arrColumm[k].toHtml();
if(columContent != null){
String[] split = columContent.split("<br>");
if(split.length>2)
returnContent = split[1].substring(0,split[1].length()-4);
}
break;
}
}
}
break;
}
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return returnContent;
}
public static void main(String[] args) throws Exception {
BaiduResultAction action = new BaiduResultAction();
//抓取sohu的内容.通过百度
String url = "http://www.baidu.com/s?wd=%BA%DA%BF%CD%B5%DB%B9%FAII+11%28112%29++site%3Asohu.com";
// String url = "http://bbs.hoopchina.com/htm_data/96/0712/274754.html";
// List<String> hrefList = sinaAction.parseLink(url, getIndexFilter());
/* logger.debug(sinaAction.compNews(url)); */
action.compNews(url);
}
}
效果如下:http://www.tondou.cn/c/2008-05-12/314146 u
public static final Logger logger = Logger
.getLogger(BaiduResultAction.class);
/**
* 组装新闻
*
* @param url
* @return
*/
public String compNews(String url) {
String returnContent = null;
try {
ParserModel parserModel = new ParserModel();
//table 的抓取标签
String content = "border=/"0/" cellpadding=/"0/" cellspacing=/"0/"";
parserModel.setContent(content);
NodeClassNameFilter contentNodeClassNameFilter = new NodeClassNameFilter(
TableTag.class, parserModel);
NodeList contentList = getAllNodeList(url,
contentNodeClassNameFilter);
// 对table的处理 只取第一个table中的一项记录
//如果全部抓取内容,则要去掉最后一个break;
for (int i = 1; i < contentList.size(); i++) {
if (contentList.elementAt(i) instanceof TableTag) {
TableTag tableContent = (TableTag) contentList
.elementAt(i);
int rowCount = tableContent.getRowCount();
TableRow[] arrRows = tableContent.getRows();
for (int j = 0; j < arrRows.length; j++) {
TableRow tableRow = arrRows[j];
TableColumn[] arrColumm = tableRow.getColumns();
for (int k = 0; k < arrColumm.length; k++) {
String columContent = arrColumm[k].toHtml();
if(columContent != null){
String[] split = columContent.split("<br>");
if(split.length>2)
returnContent = split[1].substring(0,split[1].length()-4);
}
break;
}
}
}
break;
}
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return returnContent;
}
public static void main(String[] args) throws Exception {
BaiduResultAction action = new BaiduResultAction();
//抓取sohu的内容.通过百度
String url = "http://www.baidu.com/s?wd=%BA%DA%BF%CD%B5%DB%B9%FAII+11%28112%29++site%3Asohu.com";
// String url = "http://bbs.hoopchina.com/htm_data/96/0712/274754.html";
// List<String> hrefList = sinaAction.parseLink(url, getIndexFilter());
/* logger.debug(sinaAction.compNews(url)); */
action.compNews(url);
}
}