gpt4 book ai didi

python - 在 BeautifulSoup 中提取多个 Span 标签内的内容

转载 作者:行者123 更新时间:2023-12-01 03:36:20 35 4
gpt4 key购买 nike

我正在尝试从多个跨度标签中提取字符串内容。 HTML 页面的快照是:

<div class="secondary-attributes">
<span class="neighborhood-str-list">
Southeast
</span>
<address>
1234 Python Blvd S<br>Somewhere, NV 98765
</address>
<span class="biz-phone">
(555) 123-4567
</span>
</div>

具体来说,我正在尝试提取位于 <span class="biz-phone></span> 标记之间的电话号码。我尝试使用以下代码来执行此操作:

import requests
from bs4 import BeautifulSoup

res = requests.get(url)
soup = BeautifulSoup(res.text, "html.parser")

phone_number_results = [phone_numbers for phone_numbers in soup.find_all('span','biz-phone')]

编译的代码没有任何语法错误,但它并没有完全给出我所希望的结果:

['<span class="biz-phone">\n        (702) 476-5050\n    </span>', '<span class="biz-phone">\n        (702) 253-7296\n    </span>', '<
span class="biz-phone">\n (702) 385-7912\n </span>', '<span class="biz-phone">\n (702) 776-7061\n </span>', '<spa
n class="biz-phone">\n (702) 221-7296\n </span>', '<span class="biz-phone">\n (702) 252-7296\n </span>', '<span c
lass="biz-phone">\n (702) 659-9101\n </span>', '<span class="biz-phone">\n (702) 355-9445\n </span>', '<span clas
s="biz-phone">\n (702) 396-3333\n </span>', '<span class="biz-phone">\n (702) 643-9851\n </span>', '<span class="

biz-phone">\n (702) 222-1441\n </span>']

我的问题分为两部分:

  1. 为什么运行程序时会出现 span 标签?
  2. 我该如何摆脱它们?我可以只进行字符串编辑,但我觉得我不会充分利用 BeautifulSoup 包。有没有更优雅的方式?

注意:整个页面中还有更多 HTML 代码片段,如上面所示;有更多的 <span class="biz-phone"> (555) 123-4567 </span> 代码实例(即更多的电话号码)需要提取,因此我考虑使用 find_all()

提前谢谢您。

最佳答案

  1. find_all()返回标签列表 (bs4.element.Tag),而不是字符串。

  2. 正如 @furas 指出的,您希望访问每个标记上的 text 属性以提取标记内的文本:

    phone_number_results = [phone_numbers.text.strip()
    for soup.find_all('span', 'biz-phone')] 中的电话号码

(您可能还想在此之上调用strip())

关于python - 在 BeautifulSoup 中提取多个 Span 标签内的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40333267/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com