用jsoup解析表格

AMI*_*AMI 5 java linkedin web-scraping jsoup

我正在尝试使用 jsoup 从linkedin 配置文件中提取电子邮件地址和电话号码,这些信息中的每一个都在一个表中。我已经编写了一个代码来提取它们,但它不起作用,该代码应该适用于任何linkedin 配置文件。任何帮助或指导将不胜感激。

public static void main(String[] args) {
    try {

        String url = "https://fr.linkedin.com/";
        // fetch the document over HTTP
        Document doc = Jsoup.connect(url).get();

        // get the page title

        String title = doc.title();
        System.out.println("Nom & Prénom: " + title);
        //  first method
        Elements table = doc.select("div[class=more-info defer-load]").select("table");
        Iterator < Element > iterator = table.select("ul li a").iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next().text());
        }
        // second method
        for (Element tablee: doc.select("div[class=more-info defer-load]").select("table")) {
            for (Element row: tablee.select("tr")) {
                Elements tds = row.select("td");
                if (tds.size() > 0) {
                    System.out.println(tds.get(0).text() + ":" + tds.get(1).text());
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我试图提取的 html 代码示例(取自linkedin 配置文件)

<table summary="Coordonnées en ligne">
   <tr>
      <th>E-mail</th>
      <td>
         <div id="email">
            <div id="email-view">
               <ul>
                  <li>
                     <a href="mailto:adam1adam@gmail.com">adam1adam@gmail.com</a>
                  </li>
               </ul>
            </div>
         </div>
      </td>
   </tr>
   <tr class="no-contact-info-data">
      <th>Messagerie instantanée</th>
      <td>
         <div id="im" class="editable-item">
         </div>
      </td>
   </tr>
   <tr class="address-book">
      <th>Carnet d’adresses</th>
      <td>
         <span class="address-book">
         <a title="Une nouvelle fenêtre s’ouvrira" class="address-book-edit" href="/editContact?editContact=&contactMemberID=368674763">Ajouter</a> des coordonnées.
         </span>
      </td>
   </tr>
</table>
<table summary="Coordonnées">
   <tr>
      <th>Téléphone</th>
      <td>
         <div id="phone" class="editable-item">
            <div id="phone-view">
               <ul>
                  <li>0021653191431&nbsp;(Mobile)</li>
               </ul>
            </div>
         </div>
      </td>
   </tr>
   <tr class="no-contact-info-data">
      <th>Adresse</th>
      <td>
         <div id="address" class="editable-item">
            <div id="address-view">
               <ul>
               </ul>
            </div>
         </div>
      </td>
   </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

Zac*_*ack 1

要抓取电子邮件和电话号码,请使用 css 选择器来定位元素标识符。

\n\n
    String email = doc.select("div#email-view > ul > li > a").attr("href");\n    System.out.println(email);\n\n    String phone = doc.select("div#phone-view > ul > li").text();   \n    System.out.println(phone);\n
Run Code Online (Sandbox Code Playgroud)\n\n

有关详细信息,请参阅CSS 选择器。

\n\n

输出

\n\n
mailto:adam1adam@gmail.com\n0021653191431\xc2\xa0(Mobile)\n
Run Code Online (Sandbox Code Playgroud)\n