【问题标题】:Jsoup parse: getting text from Element not working in AndroidJsoup 解析:从 Element 获取文本在 Android 中不起作用
【发布时间】:2014-02-01 12:58:17
【问题描述】:

我正在使用 Jsoup 在 Android 中解析维基百科。我想在这段 HTML 中获取“Sección Sur-Norte”:

<div class="thumb tright">
    <div class="thumbinner" style="width:302px;">
         <a href="//commons.wikimedia.org/wiki/File:Cheops-Pyramide.png" class="image">
             <img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/6/60/Cheops-Pyramide.png/300px-Cheops-Pyramide.png" width="300" height="227" class="thumbimage" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/6/60/Cheops-Pyramide.png/450px-Cheops-Pyramide.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/6/60/Cheops-Pyramide.png/600px-Cheops-Pyramide.png 2x">
         </a>
         <div class="thumbcaption">
              <div class="magnify">
                <a href="/wiki/Archivo:Cheops-Pyramide.png" class="internal" title="Aumentar">
                    <img src="//bits.wikimedia.org/static-1.23wmf10/skins/common/images/magnify-clip.png" width="15" height="11" alt="">
                </a>
              </div>
               Sección Sur-Norte. <--> Text I want to scrape
          </div>
     </div>
</div>

我被选为一个元素。我正在尝试通过以下方式获得“Sección Sur-Norte”:

Elements thumbCaption = thumbinner.select("div[class*=thumbcaption]");
Element myThumbCaption = thumbCaption.first();
Log.d("", "Thumbcaptions number of elements: " + thumbCaption.size());
Log.d("", "MyThumbcaption: text:  " + aver.text());

但在日志中,我发现 thumbcaption 有 8 个元素(之后文档中的所有“thumbcaption”元素)。而且我得到的结果比 MyThumbcaption 文本是之后文档中的所有文本。

我怎样才能只刮“Sección Sur-Norte”?


更多信息:

我正在通过以下方式从 img 名称中获取 thumbinner 元素:

Elements imgs = doc.select("img[src*=" + name + "]"); 
Element img = imgs.first(); // Image selected
Element parentCaption = img.parent();
Element thumbinner = parentCaption.parent();

【问题讨论】:

    标签: android json web-scraping jsoup wikipedia-api


    【解决方案1】:

    尝试在 thumbcaption div 上使用ownText() 方法。它只获取元素拥有的文本,忽略其子元素拥有的任何文本。

    例子:

    Element myThumbCaption = thumbCaption.first();
    System.out.println(myThumbCaption.ownText());
    

    应该输出:

    Sección Sur-Norte.
    

    您可以阅读有关此方法的更多信息here

    【讨论】:

    • 不工作。这太不可思议了,但那是一个空字符串。我开始认为 Jsoup 在 Android 中不能很好地工作!
    • 它对我有用,但只有当我使用您提供的 HTML 时。如果您解析我假设您所做的真实 URL,thumbCaption.first() 将返回错误的元素。您想要的是使用 thumbCaption.get(1) 来获取正确的元素。另请注意,您应该知道站点对不同客户端的响应不同,因此在连接到 URL 时,最好设置不同的用户代理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2013-08-27
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    相关资源
    最近更新 更多