使用 Beautiful Soup findall 提取单引号之间的文本

Use Beautiful Soup findall to extract text between single quotations

我正在使用 Beautiful Soup,我想使用 findall 方法提取 '' 中的文本。

content = urllib.urlopen(address).read()
soup = BeautifulSoup(content, from_encoding='utf-8')
soup.prettify()
x = soup.findAll(do not know what to write)

以汤汁为例:

<td class="leftCell identityColumn snap" onclick="fundview('Schroder
European Special Situations');" title="Schroder European Special
Situations"> <a class="coreExpandArrow" href="javascript:
void(0);"></a> <span class="sigill"><a class="qtpop"
href="/vips/ska/all/sv/quicktake/redirect?perfid=0P0000XZZ3&amp;flik=Chosen">
<img
src="/vips/Content/corestyles/4pSigillGubbe.gif"/></a></span>
<span class="bluetext" style="white-space: nowrap; overflow:
hidden;">Schroder European Spe..</span>

我希望 soup.findAll(do not know what to write) 的结果是:Schroder European Special Situations 并且 findall 逻辑应该基于它是单引号之间的文本。

找到 td 元素并获取 onclick 属性值 - 此时 BeautifulSoup 的工作将完成。下一步是从属性值中提取所需的文本——让我们为此使用正则表达式。实施:

import re

onclick = soup.select_one("td.identityColumn[onclick]")["onclick"]

match = re.search(r"fundview\('(.*?)'\);", onclick)
if match:
    print(match.group(1))

或者,看起来 spanbluetext class 里面有所需的文本:

soup.select_one("td.identityColumn span.bluetext").get_text()

此外,请确保您使用的是 4th BeautifulSoup version 并且您的导入语句是:

from bs4 import BeautifulSoup