簡體   English   中英

天氣網站jsoup java

[英]Weather website jsoup java

我有以下代碼

`

import java.io.IOException;

 import org.jsoup.*;
 import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;
 import org.jsoup.select.Elements;
 import java.io.*;
 public class da {

/**
 * @param args
 */
public static void main(String[] args) {
    try {


            Document doc=Jsoup.connect("http://www.vremea.net/").get();
            Elements e=doc.select(".homeContent>ul>li ");
            PrintStream ps=new PrintStream(new FileOutputStream("io"));
                for(int i=0;i<e.size();i++)
                    {ps.println(e.get(i).text());
                System.out.println(e.get(i).text());}


    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


}

}

`我想訪問這個網站http://www.vremea.net/並且有“家庭內容”,每個“li”有更多“ul”。 我的代碼遍歷所有“ul”,但正如你在網站上看到的那樣,它沒有按順序獲得那些“ul”(我得到第二列,第三列,第四列,然后是第一列)我的問題是為什么它按此順序排列?

編輯:這可能是一個更通用的方式這樣做(我的意思是如果這個網站的所有者想要修改結構,以便像我在這里做的那樣得到這個列表而不修改代碼)?

由於您的代碼似乎正確,我接受了您的代碼(稍微重新格式化)

public class NewClass {
    public static void main(String[] args) {
        try {
            Document doc = Jsoup.connect("http://www.vremea.net/").get();
            Elements e = doc.select(".homeContent>ul>li ");
            PrintStream ps = new PrintStream(new FileOutputStream("io"));
            for (int i = 0; i < e.size(); i++) {
                ps.println(e.get(i).text());
                System.out.println(e.get(i).text());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

並在Java8u60,Java8u91和Java7上使用Jsoup 1.9.2和1.8.3執行它。

在每次執行時,我得到以下輸出,我假設正是您正在尋找的:

• Bucuresti
• Adjud
• Aiud
• Alba Iulia
• Alexandria
• Arad
• Bacau
• Baia Mare
• Bailesti
• Barlad
• Beius
• Bistrita
• Blaj
• Botosani
• Brad
• Braila
• Brasov
• Buzau
• Calafat
• Calarasi
• Campia Turzii
• Campina
• Campulung Moldovenesc
• Campulung-Muscel
• Caracal
• Caransebes
• Carei
• Cluj-Napoca
• Codlea
• Constanta
• Craiova
• Curtea de Arges
• Dej
• Deva
• Dorohoi
• Dragasani
• Drobeta-Turnu Severin
• Fagaras
• Falticeni
• Fetesti
• Focsani
• Galati
• Gheorgheni
• Gherla
• Giurgiu
• Hunedoara
• Husi
• Iasi
• Lugoj
• Lupeni
• Mangalia
• Marghita
• Medgidia
• Medias
• Miercurea Ciuc
• Moinesti
• Moreni
• Motru
• Odorheiu Secuiesc
• Oltenita
• Onesti
• Oradea
• Orastie
• Orsova
• Pascani
• Petrosani
• Piatra Neamt
• Pitesti
• Ploiesti
• Radauti
• Ramnicu Sarat
• Ramnicu Valcea
• Reghin
• Resita
• Roman
• Rosiori de Vede
• Sacele
• Salonta
• Satu Mare
• Sebes
• Sfantu Gheorghe
• Sibiu
• Sighetu Marmatiei
• Sighisoara
• Slatina
• Slobozia
• Suceava
• Targoviste
• Targu Jiu
• Targu Mures
• Targu Secuiesc
• Tarnaveni
• Tecuci
• Timisoara
• Toplita
• Tulcea
• Turda
• Turnu Magurele
• Urziceni
• Vaslui
• Vatra Dornei
• Vulcan
• Zalau
• Zimnicea

所以我無法重現你描述的行為。 您可能想嘗試使用不同或更新版本的Jsoup(甚至是Java)並測試問題是否仍然存在。

即使你發現了這個問題,也只是想指出Document.select()返回了Elements ,它將ArrayList作為超類。 您可以直接迭代它。

    for (Element item : doc.select(".homeContent > ul > li > a"))
        System.out.println(item.ownText());

暫無
暫無

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

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