【问题标题】:Jsoup: how to get ID and href within many elementsJsoup:如何在许多元素中获取 ID 和 href
【发布时间】:2016-10-22 08:46:44
【问题描述】:

我需要获取所有元素的 ID 和 href(在图片中的彩色框中显示)。我不知道如何准确地处理路径并提取所需的信息。我该怎么做?

【问题讨论】:

    标签: java html web-crawler jsoup html-parser


    【解决方案1】:

    按 id 和标签选择,直到找到相关标签,然后按属性获取它们。检查下面的代码sn-p:

    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");            
    }
    

    【讨论】:

      【解决方案2】:

      好的,我做到了。有用!!感谢 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();
              }
          }
      

      【讨论】:

        猜你喜欢
        • 2014-07-16
        • 1970-01-01
        • 2012-03-09
        • 1970-01-01
        • 1970-01-01
        • 2015-08-05
        • 2011-03-07
        • 2011-10-13
        • 2011-11-24
        相关资源
        最近更新 更多