【问题标题】:Jsoup forum Scrapingjsoup论坛爬取
【发布时间】:2012-07-18 08:58:34
【问题描述】:

我正在使用 Jsoup 抓取一个在线论坛。想知道我应该如何在没有其他评论者引用的情况下抓取主要帖子。

我设法刮了: carey 写道:是的,CC 通常有折扣,尤其是汽油和 makan... 在加油站使用黑色 DBS 借记卡可以得到折扣?我总是付现金,因为没有抄送。

我想要什么:黑色DBS借记卡在加油站使用可以打折吗?我总是付现金,因为没有抄送。

这里是html:

<div id="post_message_63989045">
  <div class="quote"> 
    <span class="byline"> <a href="/eat-drink-man-woman-16/life-without-credit-cards-3601620-post63982949.html#post63982949" rel="nofollow"><img class="inlineimg" src="http://www.hardwarezone.com.sg/img/forums/hwz/buttons/viewpost.gif" border="0" alt="View Post" /></a> <strong>carey</strong> wrote: </span> 
     <blockquote cite="showthread.php?p=63982949#post63982949">
        Yup, CC usually got discounts, especially for petrol and makan...
        <br /> 
        <br /> So those without a CC are being penalized 
        <img src="http://www.hardwarezone.com.sg/img/forums/hwz/smilies/eek.gif" border="0" alt="" title="EEK!" class="inlineimg" /> 
     </blockquote> 
  </div>The black DBS debit card when used at petrol kiosk can get discount ?
  <br /> 
  <br /> I always pay cash because no cc . 
  <img src="http://www.hardwarezone.com.sg/img/forums/hwz/smilies/frown.gif" border="0" alt="" title="Frown" class="inlineimg" />
</div> 

【问题讨论】:

  • 如果你知道 id,试试这个Element post_message= doc.getElementById("post_message_63989045").text();
  • 是的。这将产生所有文本......我需要一种方法来排除“class= quote”中的文本

标签: html web-scraping jsoup


【解决方案1】:

你可以简单地过滤掉具有“引用”类的&lt;div&gt;s,如果你用于抓取的任何东西都会解析 HTML 标记

【讨论】:

  • 我用这个方法吗:public Elements removeClass(String className)
  • 我可以使用哪种方法来过滤这个具有“quote”类的
  • 我以前从未使用过 Jsoup,所以我不太确定
【解决方案2】:

如果您可以使用 XPath,您可以只查询所有作为直接子节点的文本节点:

//div[@id="post_message_63989045"]/text()

引号将被忽略,因为它的文本是 quote-div 的子元素。 (可能以及某人发布的任何代码标签)

【讨论】:

    【解决方案3】:

    cmets.ownText()

    获取元素拥有的文本。不将文本与所有子项结合起来

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签