如何使用 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
我只想解析 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