您的位置:首页 > Web前端 > HTML

通过htmlParser抓取百度相关内容

2008-05-13 11:31 561 查看
最近这两天我做了个最新电影网的视频网站,主要是从土豆抓取来的.所以内容页就是框架,不便于搜索的抓取。所以我就想加些相关内容,像这样的内容
      由于我就是通过百度搜索关键字来填充内容。下面就是我通过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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息