Мне нужно получить идентификаторы и href witin все элементы (показано на рисунке в цветных прямоугольниках). Я не знаю, как точно указать путь и извлечь требуемую информацию. Как я могу это сделать?Jsoup: как получить идентификатор и href во многих элементах
-1
A
ответ
0
Выбор по идентификатору и бирками, пока вы получите в соответствующие теги, а затем получить их по атрибуту. Проверьте приведенный ниже код:
Document doc = Jsoup.parse("html_file");
Element loginform = doc.getElementById("search_result_container");
Elements inputElements = loginform.getElementsByTag("div");
Element secondDiv = inputElements.get(1);
Elements hyperLinks = secondDiv.getElementsByTag("a");
for (Element alink : hyperLinks) {
String href = alink.attr("href");
String id = alink.attr("id");
}
0
Хорошо, я сделал это. Оно работает!! Спасибо SUNNYben, вы дали мне правильный вход !!!
И вот мое решение-код:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class Steam_GameID_Links
{
public static void main(String[] args)
{
Steam_GameID_Links wc = new Steam_GameID_Links();
try
{
String url = "http://store.steampowered.com/search/?sort_by=_ASC&category1=998&page=1";
Document document = Jsoup.connect(url).get();
// nur die Spielnamen
Elements howMuchPages = document.select(".search_pagination_right");
String[] stuff = howMuchPages.text().split(" ");
String tmp = stuff[4].replace(" ", "").replace(".", "");
StringBuilder sb = new StringBuilder();
for(int i = 0; i < tmp.length(); i++)
{
if(Character.isDigit(tmp.charAt(i)))
{
sb.append(tmp.charAt(i));
}
}
String last = sb.toString().trim();;
int lastPages = Integer.parseInt(last);
int counter = 0;
for(int i = 1; i < lastPages + 1; i++)
{
url = "http://store.steampowered.com/search/?sort_by=_ASC&category1=998&page=" + i;
document = Jsoup.connect(url).get();
// waehlt zunaechst den ElternKnoten: <div id="search_result_container">
Element parentNode = document.getElementById("search_result_container");
Elements childNodes = parentNode.getElementsByAttribute("data-ds-appid");
for(Element alink : childNodes)
{
String href = alink.attr("href");
String id = alink.attr("data-ds-appid");
String name = alink.getElementsByClass("title").text();
System.out.println("Spiel: " + name + ", ID: " + id + ", SpieleLink: " + href);
// wc.writeSpielNameIDLink("Spiel: " + name + ", ID: " + id + ", SpieleLink: " + href + "\n");
}
}
}
catch(IOException e)
{
e.printStackTrace();
}
}