我需要提取以下html中列出的所有食物的ID和mfg.name https://ndb.nal.usda.gov/ndb/search/list
我正在使用Jsoup并且很新。
这里是html源代码,我必须提取食物的ID和名称 enter image description here
这是我在java中的源代码:
try{
Document doc = Jsoup.connect("https://ndb.nal.usda.gov/ndb/search/list?maxsteps=6&format=&count=&max=50&sort=fd_s&fgcd=&manu=&lfacet=&qlookup=&ds=&qt=&qp=&qa=&qn=&q=&ing=&offset=0&order=asc").userAgent("mozilla/17.0").get();
Elements temp =doc.select ("div.list-left");
int i=0;
for ( Element Food:temp){
i++;
System.out.println(i+ "" +Food.getElementsByTag("table").first().text());
}
}
catch (IOException e){
e.printStackTrace();
}
所以我在这里从第一页获得所有信息。但我需要提取所有页面的ID和mfg.names。
任何帮助将不胜感激。
答案 0 :(得分:0)
试试这个。
try {
int maxPage = 3681;
int i = 0;
for (int page = 0; page < maxPage; ++page) {
Document doc = Jsoup.connect(
"https://ndb.nal.usda.gov/ndb/search/list"
+ "?maxsteps=6&format=&count=&max=50"
+ "&sort=fd_s&fgcd=&manu=&lfacet=&qlookup=&ds="
+ "&qt=&qp=&qa=&qn=&q=&ing=&offset=" + (page * 50)
+ "&order=asc")
.userAgent("mozilla/17.0").get();
Elements rows = doc.select("div.list-left table tbody tr");
for (Element row : rows) {
++i;
System.out.print("No." + i);
System.out.print(" ID=" + row.select("td:eq(1) a").text());
System.out.println(" Manufacturer=" + row.select("td:eq(3) a").text());
}
}
} catch (IOException e) {
e.printStackTrace();
}