【问题标题】:How can I extract text under html div id tag in python如何在python中提取html div id标签下的文本
【发布时间】:2020-05-14 21:02:06
【问题描述】:

我想知道如何从这个网站的这个标签中提取文本:https://ru.thefreedictionary.com/%d1%88%d1%87%d0%be

<div id="MainTxt">


            Слово в словаре не найдено.
 <div id="didYouMean"></div>Быть может, вы искали:
<div style="margin:6px 0 3px 0">

我正在使用的代码获取 id 标签下的所有内容,但我只想获取文本“Слово в словаре не найдено.”

soup.findAll("div", attrs = {"id": ["MainTxt"]})

感谢您的帮助!

【问题讨论】:

  • 请重新检查您的 html sn-p。您有几个未封闭的标签,这将使其难以解析。

标签: python web-scraping beautifulsoup text-extraction


【解决方案1】:

首先,没有必要将findAll()id 属性结合起来,因为在那个html 中只能有一个带有id一个 元素,所以findAll() 将始终返回一个元素的列表。以下是解决问题的方法。

match = soup.find('div', {'id': 'MainTxt'})
text = match.text.rstrip().lstrip().split('\n')

rstrip()lstrip() 用于删除字符串前后的尾随空格。现在text 是一个元素列表:['Слово в словаре не найдено.\r', ' Быть может, вы искали:\r', '', ...]。获取目标字符串很容易。

target_string = text[0].replace('\r', '')

【讨论】:

    【解决方案2】:

    我相信您遇到的问题是在 'Слово в словаре не найдено.'之后的 html 页面上没有 &lt;/div&gt;

    这意味着“MainTxt”包括直到下一个未打开的&lt;/div&gt; 的所有内容。你可以把它们想象成圆括号或花括号。

    所以这类似于 . . .

    Maintxt{
    Слово в словаре не найдено.
    didYouMean{}Быть может, вы искали:
    

    您可以尝试获取所有 Maintxt,就像在您的代码中一样,然后删除所有其他 div,但不幸的是,这可能不像单行那么简单,因为您正在使用的 html 不包装 Слово в словаре не найдено。在自己的 div 中

    【讨论】:

      猜你喜欢
      • 2019-05-22
      • 2015-11-25
      • 2014-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-22
      相关资源
      最近更新 更多