【问题标题】:how to get text value between the end of </h3> and <br/>如何获取 </h3> 和 <br/> 之间的文本值
【发布时间】:2012-09-11 21:38:51
【问题描述】:

我正在尝试使用 python 和 beautiuflsoup 进行屏幕抓取。我遇到一个问题是我不知道如何获取&lt;br/&gt;之前的文本值

这是一个例子:

<h3>
    Francois  Abboud
</h3>
Professor,&nbsp;
Internal Medicine
<br />
<br />

【问题讨论】:

    标签: python text screen-scraping beautifulsoup


    【解决方案1】:

    tsup,如果您将该 html 分配给这样的字符串值:

    html = 'your html here'
    

    然后你可以对其进行拆分,字符串将被拆分为一个字符串值数组,在你指定的分隔符的任一侧保存字符串:

    def extractmyCrap(html):
       h3splitStrings = html.split('</h3>')
       h3splitStrings = h3splitStrings[1]
       extractedText = h3splitStrings.split('<br/>')
       return extractedText[0]
    

    如果您需要任何进一步的帮助,或者我对您的问题的理解不正确,请发表评论

    【讨论】:

    • 嗨,我想做的是在
      之前获取文本。比如在html中有多个h3、h4、h2。并且总有一个
      追随它。那么我如何才能找到 h3 和 br、h4 和 br 之间的值...
    【解决方案2】:

    我觉得你可以用.next_sibling:

    >>> from bs4 import BeautifulSoup
    >>> 
    >>> html = """
    ... <h3>
    ...     Francois  Abboud
    ... </h3>
    ... Professor,&nbsp;
    ... Internal Medicine
    ... <br />
    ... <br />
    ... """
    >>> 
    >>> soup = BeautifulSoup(html)
    >>> 
    >>> for h3 in soup.findAll("h3"):
    ...     print 'h3:'
    ...     print repr(h3)
    ...     print 'next sibling:'
    ...     print repr(h3.next_sibling)
    ... 
    h3:
    <h3>
        Francois  Abboud
    </h3>
    next sibling:
    u'\nProfessor,\xa0\nInternal Medicine\n'
    

    我应该说两分钟前我不知道该怎么做,但我知道findAll。所以我得到了一个 h3 对象,我使用 IPython 的选项卡完成来查看其中的内容,它有 h3.next_elementh3.next_sibling 之类的东西,我尝试了它们直到一个工作。

    【讨论】:

    • 听起来不错。但是,我得到这样的结果:Francois Abboud h3:

      Francois Abboud

      next brother: None
    • @user1652287:那么我上面使用的数据和您的 HTML 之间可能存在一些差异。如果您完全运行我的代码——只需删除“>>>”和“...”——你明白我所做的吗?
    • 是的,我做到了,结果是“无”。还有什么方法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多