如何使用 Beautiful Soup 查找 id 更改的标签?

Mar*_*son 5 python regex beautifulsoup

我在 Python 中使用 Beautiful Soup。

这是一个示例网址:

http://www.locationary.com/place/en/US/Ohio/Middletown/McDonald%27s-p1013254580.jsp

在 HTML 中,有一堆标签,我可以指定要查找哪些标签的唯一方法是使用它们的 id。我唯一想找到的是电话号码。标签看起来像这样:

<td class="dispTxt" id="value_xxx_c_1_f_8_a_134242498">5134231582</td> 
Run Code Online (Sandbox Code Playgroud)

我访问了同一网站上的其他 URL,每次都发现电话号码标签的 ID 几乎相同。始终保持不变的部分是:

'value_xxx_c_1_f_8_a_'
Run Code Online (Sandbox Code Playgroud)

但是,之后的数字总是会改变。有没有办法让 Beautiful Soup 查找 id 的一部分并匹配它,让另一部分像正则表达式一样是数字?

另外,一旦我拿到标签,我就想知道……如何在不使用正则表达式的情况下提取电话号码?我不知道 Beautiful Soup 是否可以做到这一点,但它可能比正则表达式更简单。

Sim*_*ser 4

您可以使用正则表达式(此示例匹配标签名称,您需要调整它以使其匹配元素的 id):

import re
for tag in soup.find_all(re.compile("^value_xxx_c_1_f_8_a_")):
    print(tag.name)
Run Code Online (Sandbox Code Playgroud)

  • 您确定需要转义“_”吗? (2认同)