Python 获取第一个td值

Python 获取第一个td值,python,beautifulsoup,Python,Beautifulsoup,我对Beautifulsoup和Python还不熟悉,我正在试图弄清楚如何获取HTML页面的第一个标签。有人能告诉我我的代码有什么问题吗 HTML 1365米 评级25-0 12h45汤。芬达尔('th',{'width':'10%})[3]应该是: # Get the all matching 'th' that also has 'width' set to '10%', access the first match print('Track '+soup.findAll('th',{'

我对Beautifulsoup和Python还不熟悉,我正在试图弄清楚如何获取HTML页面的第一个标签。有人能告诉我我的代码有什么问题吗

HTML

1365米
评级25-0
12h45
汤。芬达尔('th',{'width':'10%})[3]
应该是:

# Get the all matching 'th' that also has 'width' set to  '10%', access the first match
print('Track '+soup.findAll('th',{'width':'10%'})[0]) 
或者,如果您只想访问第一个匹配项:

# Get the first 'th' with 'width' '10%'
soup.find('th',{'width':'10%'})
print(soup.findAll('th')[0])

这是第一个

计算机从0,1,2,3…开始计数。 如果要打印最后一个

print(soup.findAll('th')[1])

为什么?
soup.findAll('th',{'width':'10%})[3]
不起作用

我们正在寻找宽度
10%

在这个HTML中只有两个

      <th width="10%">1365 m</th>
      <th width="15%">Rating 25-0</th>
      <th width="10%">12h45</th> 

你有没有试过像find_all(“th”,class=“width”)这样的东西?这将返回一个列表,您可以从中选择第一个元素作为旁注,为什么要使用
findAll
而不是
find_all
?尽管文档中说它已被删除,但这种情况还是发生了,但您真的不应该依赖于此。更重要的是,如果你从BS3而不是BS4的教程中学习,你真的很想找到一个更新更好的教程(同样,如果你复制和粘贴BS3代码等等)。要得到最后一个教程,请使用这个
soup.find\u all('th',{'width':'10%})[1]
。最后一个是
print(soup.findAll('th')[2])
,它是
soup.findAll('th',{'width':'10%})
它将找到该
th
的所有实例,其属性
width
正好是
10%
。如果它只找到精确
10%
的那些,那么只有两个(索引
0,1
)。当心!然后纠正你的答案。当OP示例html中有3个“th”元素时,为什么说打印最后一个是“print(shop.findAll('th')[1])”?[1]将打印第二个->
12h45
,[0]将打印
1365 m
。只是想确保他可以通过索引提取一个特定的树,而不是遍历整个树。
for i in soup.findAll('th',{'width':'10%'}):
    print(i)