如何使用 python bs4 解析 HTML 文档中唯一的第二个 span 标签

How to parse the only the second span tag in an HTML document using python bs4

我只想解析 html 文档中的一个 span 标签。有三个没有任何 class 或 I'd 的兄弟 span 标签。我只针对第二个使用 BeautifulSoup 4.

给定以下 html 文档:

<div class="adress">
   <span>35456 street</span>
   <span>city, state</span>
   <span>zipcode</span>
</div>

我试过:

for spn in soup.findAll('span'):
    data = spn[1].text

但是没用。预期结果是第二个跨度中的文本存储在一个变量中:

data = "city, state"

以及如何将第一个和第二个跨度连接到一个变量中。

您正在尝试分割一个个体 span(一个 Tag 实例)。摆脱 for 循环并切分 findAll 响应,即

>>> soup.findAll('span')[1]
<span>city, state</span>

您可以使用以下方法同时获取第一个和第二个标签:

>>> soup.findAll('span')[:2]
[<span>35456 street</span>, <span>city, state</span>]

或者,作为字符串:

>>> "".join([str(tag) for tag in soup.findAll('span')[:2]])
'<span>35456 street</span><span>city, state</span>'

另一个选项:

data = soup.select_one('div > span:nth-of-type(2)').get_text(strip=True)
print(data)

输出:

city, state