【问题标题】:Python 3 BS4 - Return First <td> in Specified <tr>Python 3 BS4 - 返回指定 <tr> 中的第一个 <td>
【发布时间】:2018-08-23 02:18:49
【问题描述】:

希望获取 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] 等,但似乎无法弄清楚。有人可以帮忙吗?谢谢一百万。

【问题讨论】:

    标签: python html python-3.x beautifulsoup


    【解决方案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.current 是一个CSS selector,它将匹配具有current 类的td 元素,该元素位于具有tr 类的tr 元素中。

    【讨论】:

    • 当前选项就像一个魅力。我忘了提到实际上第一个 td 是一个不同的值,但我想要的值是 class="Current" 的值,所以这个解决方案效果很好。非常感谢!
    猜你喜欢
    • 2013-10-12
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多