如何提取 html div id 标签下的文本 python

How can I extract text under html div id tag in python

我想知道如何从这个网站的标签中提取文本: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 页面上没有紧跟在“Слово в словаре не найдено”之后的 </div>

这意味着 "MainTxt" 包括下一个未打开的 </div> 之前的所有内容。您可以将它们想象成圆括号或大括号。

所以这类似于 。 . .

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

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

首先,不需要将 findAll()id 属性组合,因为只能有 one 元素与 id 在那个 html 所以 findAll() 总是 return 一个元素的列表。这是解决问题的方法。

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

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

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