[英]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.