一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - java分析html算法(java網頁蜘蛛算法示例)

java分析html算法(java網頁蜘蛛算法示例)

2019-11-15 14:40java教程網 JAVA教程

近來有些朋友在做蜘蛛算法,或者在網頁上面做深度的數據挖掘,下面使用示例

遇到復雜而繁瑣的html頁面大家都望而卻步。因為很難獲取到相應的數據。

最古老的辦法的是嘗試用正則表達式,估計那么繁瑣的東西得不償失,浪費我們寶貴的時間。

第二個辦法用開源組織htmlparser的包,這個是一個比較老的項目,但是效果估計不是很好,好像不可以深入分析html,只能分析5級的結構;

我這里有個htmlparser的源代碼,可以獲取所有的超鏈接的

 

復制代碼代碼如下:


   /*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package test;

 

import java.util.HashMap;
import java.util.Map;

import org.htmlparser.Node;
import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.tags.LinkTag;
import org.htmlparser.util.NodeList;


public class GetLinkTest {

    public static void main(String[] args) {

        try {
            // 通過過濾器過濾出<A>標簽
            Parser parser = new Parser("//m.ythuaji.com.cn");
            NodeList nodeList = parser.extractAllNodesThatMatch(new NodeFilter() {
                // 實現該方法,用以過濾標簽
                public boolean accept(Node node) {
                    if (node instanceof LinkTag)// 標記
                    {
                        return true;
                    }
                    return false;
                }
            });
            // 打印
            for (int i = 0; i < nodeList.size(); i++) {
                LinkTag n = (LinkTag) nodeList.elementAt(i);
                //System.out.print(n.getStringText() + " ==>> ");
                //System.out.println(n.extractLink());
                try {
                    if (n.extractLink().equals("//m.ythuaji.com.cn")) {
                        System.out.println(n.extractLink());
                    }
                } catch (Exception e) {
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

 

第三個辦法,也是我現在一直在用的辦法,首先把html清理為xml,然后用java解析xml獲取數據,現在上傳一個java clean html的源代碼:

 

復制代碼代碼如下:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package exec;

import java.io.File;
import java.io.IOException;
import org.htmlcleaner.CleanerProperties;
import org.htmlcleaner.HtmlCleaner;
import org.htmlcleaner.PrettyXmlSerializer;
import org.htmlcleaner.TagNode;

/**
 *
 */
public class HtmlClean {

    public void cleanHtml(String htmlurl, String xmlurl) {
        try {
            long start = System.currentTimeMillis();

            HtmlCleaner cleaner = new HtmlCleaner();
            CleanerProperties props = cleaner.getProperties();
            props.setUseCdataForScriptAndStyle(true);
            props.setRecognizeUnicodeChars(true);
            props.setUseEmptyElementTags(true);
            props.setAdvancedXmlEscape(true);
            props.setTranslateSpecialEntities(true);
            props.setBooleanAttributeValues("empty");

            TagNode node = cleaner.clean(new File(htmlurl));

            System.out.println("vreme:" + (System.currentTimeMillis() - start));

            new PrettyXmlSerializer(props).writeXmlToFile(node, xmlurl);

            System.out.println("vreme:" + (System.currentTimeMillis() - start));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲国产欧美在线看片 | 国产成人精品视频频 | 小寡妇好紧进去了好大看视频 | 四虎最新紧急更新地址 | 亚洲AV人无码综合在线观看蜜桃 | 日本特黄一级大片 | 亚洲第一男人网站 | 女学生被老师调教在教室 | h片免费网站 | 免费看日韩 | 好大好硬好深好爽想要之黄蓉 | 掀开奶罩边躁狠狠躁软学生 | 98免费视频 | 欧洲美女人牲交一级毛片 | 双性总裁被调教1v1 双性双根 | 亚洲2017久无码 | 深夜国产在线 | 男女男精品网站免费观看 | 久久视频在线视频观看天天看视频 | 嫩草精品 | 女人把扒开给男人爽 | 精品一区二区三区高清免费观看 | 1313午夜精品理伦片 | 亚洲视频观看 | 免费高清www动漫视频播放器 | 日本一区三区 | 婷婷日韩 | 精品日韩欧美一区二区三区 | 免费一区二区视频 | 亚洲免费在线观看 | 成年人视频在线播放 | 国内精品久久久久影院嫩草 | 高清在线免费观看 | 久久黄色免费 | 男人的天堂久久爱 | 狠狠做五月深爱婷婷天天综合 | 色综合久久丁香婷婷 | 亚洲男人天堂影院 | 91看片淫黄大片欧美看国产片 | 免费亚洲一区 | 国四虎影永久 |