尝试从包含其他标签的特定标签中提取文本。 BeautifulSoup

Trying to extract text from specific tag that contains other tags. BeautifulSoup

我有以下html

    <div class="1" style="">
         text0
         <span class="2">text1</span>
      <div class="3" title="something" name="something1">
         text2
         <span class="small">text3</span>
      </div>
    </div>

我正在尝试使用 BeautifulSoup 提取 text0。

但是

div = soup.find_all("div", {"class":"1", "style":"").text.strip()

div = soup.find("div", {"class":"1", "style":"").get_text()

不工作。有什么想法吗????

会发生什么?

首先你的代码中有一个拼写错误,缺少一个结束 },所以你的所有选择都会出现错误。

find_all() 将不起作用,因为您无法直接从 result set 获取文本,您必须对其进行迭代。

要获取一个元素的所有文本,您的行应更改为:

 soup.find("div", {"class":"1", "style":""}).text.strip()

如何只获取text0?

您可以使用 stripped_strings 并从结果集中选择第一个元素:

list(soup.find("div", {"class":"1", "style":""}).stripped_strings)[0]

您可以选择迭代 contents 并在出现下一个标签时中断:

for e in soup.find("div", {"class":"1", "style":""}).contents:
    if not e.name:
        print(e.text.strip())
        break