Python 3 BS4-在指定的情况下首先返回

时间:2018-08-23 02:18:49

标签: 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]等,但似乎无法弄清楚。有人可以协助吗?谢谢你一百万。

1 个答案:

答案 0 :(得分:2)

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

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

或者,如果需要进入第一个td的第一个内部tr元素:

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,它将与具有td类的current元素内的具有tr类的last元素相匹配。 / p>