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 是否可以做到这一点,但它可能比正则表达式更简单。
您可以使用正则表达式(此示例匹配标签名称,您需要调整它以使其匹配元素的 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)