我在同一个div类中有两个<tr>
个标签。第一个tr标签打印文本就好了。我试图访问容器中的第二个tr标签,但我似乎无法让它工作。另请注意,并非所有容器都有第二个<tr>
标记,因此我需要if
语句来检查它是否存在。如果是,则从中打印文本。谢谢!
page_soup = soup(page_html, "html.parser")
containers = page_soup.findAll("div",{"class":"right"})
for container in containers:
print(container.span.text)
print(container.tr.text)
if container.nextSiblings('tr')[1]:
print(container.nextSiblings('tr')[1].text)
答案 0 :(得分:0)
您可以找到容器中的所有tr
元素并检查它们中有多少元素:
for container in containers:
trs = container("tr") # same as container.find_all("tr")
if len(trs) > 1:
print(trs[1].get_text())
您还可以在一个CSS selector中的每个容器中直接找到第二个tr
:
for tr in soup.select(".right > tr:nth-of-type(2)"):
print(tr.get_text())
演示:
from bs4 import BeautifulSoup
data = """
<body>
<div class="right">
<tr>container 1 row 1</tr>
<tr>container 1 row 2</tr>
</div>
<div class="right">
<tr>container 2 row 1</tr>
</div>
<div class="right">
<tr>container 3 row 1</tr>
<tr>container 3 row 2</tr>
<tr>container 3 row 3</tr>
</div>
</body>
"""
soup = BeautifulSoup(data, "html.parser")
for tr in soup.select(".right > tr:nth-of-type(2)"):
print(tr.get_text())
会打印:
container 1 row 2
container 3 row 2