我正在尝试使用以下内容获取“我的家庭住址”的内容,但出现了 AttributeError:

address = soup.find(text="Address:")
print address.nextSibling

这是我的 HTML:
<td><b>Address:</b></td>
<td>My home address</td>

向下导航 td 标签并拉取内容的好方法是什么?

最佳答案

问题是您找到了 NavigableString ,而不是 <td> 。同样 nextSibling 会找到下一个 NavigableStringTag 所以即使你有 <td> 它也不会像你期望的那样工作。

这就是你想要的:

address = soup.find(text="Address:")
b_tag = address.parent
td_tag = b_tag.parent
next_td_tag = td_tag.findNext('td')
print next_td_tag.contents[0]

或者更简洁:
print soup.find(text="Address:").parent.parent.findNext('td').contents[0]

其实你可以这样做
print soup.find(text="Address:").findNext('td').contents[0]

由于 findNext 只是一遍又一遍地调用 next ,而 next 会找到下一个重复解析的元素,直到匹配为止。

关于python - Beautifulsoup - nextSibling,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5999747/

10-16 23:16