Python 3 BS4 - 返回指定 <tr> 中的第一个 <td>

标签 python html python-3.x beautifulsoup

希望获取 HTML 表格行中的第一个值。 HTML 表格行看起来就像:

Buy       Sell       Sell

...我的代码如下所示:

page = requests.get(url)
soup = BeautifulSoup(page.text, 'html.parser')
table = soup.findAll('tr', {'class' :'last'})
for r in range(len(table)):
    print(table[r].text)

...当前返回:

Buy
Sell
Sell

...应该如此,但是我只想检索“购买”值。如果有帮助,该值的 HTML 定位器是

td class = "current" .... </td

我尝试在我的代码中使用切片功能 [1]、[-1]、[1:1] 等,但似乎无法弄清楚。有人可以帮忙吗?谢谢一百万。

最佳答案

您可以使用 .find() 而不是 .findAll() 来获取第一个匹配项:

soup.find('tr', {'class': 'last'}).get_text()

或者,如果您需要获取第一个 tr 的第一个内部 td 元素:

soup.find('tr', {'class': 'last'}).td.get_text()

其中 .td.find("td") 的简写。

<小时/>

或者,您可以强制执行 current 类检查(假设您要查找内部 td 元素的内容):

soup.select_one("tr.last td.current").get_text()

其中 tr.last td.currentCSS selector它将匹配具有 last 类的 tr 元素内具有 current 类的 td 元素。

关于Python 3 BS4 - 返回指定 <tr> 中的第一个 <td>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51977501/

相关文章:

python - Scrapy从表中的链接获取数据

python - python 中具有多个循环和 if 语句的列表理解

html - <a href> 的背景颜色无法在列表中正确显示

python - 将元组的无序列表转换为 pandas DataFrame

python - set() 不删除重复项

python - 如何思考 Python 的负数按位运算?

python - Python 中的图像梯度矢量场

python - matplotlib 中的 set_aspect() 和坐标变换

html - 文本在下层父元素中仍然可见

javascript - 为 div 的高度设置动画并让下面的 div 向下移动