簡體   English   中英

如何在Hashmap的任何網站頁面中存儲標簽的頻率?

[英]How can i store the frequency of the tags in any website page in Hashmap?

我正在使用成對的Hashmap,其中存儲標簽及其頻率,但是我很困惑如何將頻率存儲在變量中。 代碼如下:

package z;
import java.awt.List;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Collector;
import org.jsoup.select.Elements;
import org.jsoup.select.Evaluator;
import org.jsoup.nodes.Element;


public class crawler {

    static String url="";

        public static void main(String[] args) {
            int val=0;
            String URL = "http://stackoverflow.com/";
            HashMap<Integer, String> myMap = new HashMap<Integer, String>();
            myMap.clear();  
            try {
                Document document = Jsoup.connect(URL).get();
                ArrayList<String> tags = new ArrayList<String>();

                System.out.println("Number of tags by select(\"*\") method =" + document.select("*").size());
                for(Element e : document.getAllElements()){
                    tags.add(e.tagName().toLowerCase());
                    myMap.put(val,tags.toString());
                    val++;
                }
                System.out.println("The tags = " + tags);
                System.out.println("Distinct tags = " + new HashSet<String>(tags));
                System.out.println("Distinct tags = " + myMap);
            } catch (IOException e) {
               System.out.println(e);
            }



    }


}

如何增加val的值,以便可以存儲所有標簽的頻率? 我們需要多個變量嗎?

我建議使用標簽作為鍵,而不是頻率。 所以你的循環會像這樣

String tagN;
for(Element e : document.getAllElements()){
    tagN = tagName().toLowerCase();
    val = 1;
    if(tags.contains(tagN){
        val+ = tags.get(tagN);
    } 
    tags.put(tagN, val);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM