在BeautifulSoup4中,如何搜索带有包含特定字符串的文本的标签?例如,当搜索“天际”时,我要打印包含字符串“天际”的每个标签的内容(例如游戏名称)。

我尝试使用

    if 'skyrim' in tag.string:


但是它从不打印任何内容。

完整定义:

def search(self):
    steam_results = self.soup.find_all('span', class_='title')

    itr = 1
    for tag in steam_results:
        if self.title in tag.string:  # <--- Not working
            print(str(itr) + ': ' + tag.string + '\n')
            itr = itr + 1


steam_results的样本:

>>> steam_results
[<span class="title">The Elder Scrolls V: Skyrim Special Edition</span>,
 <span class="title">Skyrim Script Extender (SKSE)</span>,
 <span class="title">Enderal</span>, ...]


预期结果:


上古卷轴V:天际特别版
Skyrim脚本扩展器(SKSE)


实际结果:不打印任何内容

最佳答案

问题是子字符串检查,因为它是case-sensitive。如果使用skyrim进行检查,则会得到空结果,因为没有title包含skyrim而不是Skyrim。因此,将其与这样的小写字母进行比较,

steam_results = soup.find_all('span', class_='title')
for steam in steam_results:
    if 'skyrim' in steam.getText().lower():
        print(steam.getText())


输出:

The Elder Scrolls V: Skyrim Special Edition
The Elder Scrolls V: Skyrim VR
Skyrim Script Extender (SKSE)
The Elder Scrolls V: Skyrim Special Edition - Creation Club

10-04 21:48
查看更多