python - BeautifulSoup 如何索引标签对象
问题描述
我有这个 html 代码:
<tr class="even">
<td style="background: #8FB9B0; color: #8FB9B0;">0 </td>
<td>Plupp</td>
<td class="right">RIFLEMAN</td>
<td class="right">139</td>
<td class="right">6</td>
<td class="right">30</td>
<td class="right" title="Packet loss: ">64</td>
<td class="center">No</td>
<td class="center">No</td>
<td class="center">Yes</td>
这是第二个带有“偶数”类的 tr。我想从这里提取第二个 td aka Plupp 和第三个 aka RIFLEMAN
请帮助我理解我做错了什么,这是我的代码:
tr = soup.find_all('tr', class_='even')[1]
a = tr[2].find('td')
我收到此错误:
File "test.py", line 45, in <module>
a = tr[2].find('td')
File "C:\Python27\lib\site-packages\bs4\element.py", line 1011, in __getitem__
return self.attrs[key]
KeyError: 2
解决方案
你的问题开始于:
tr = soup.find_all('tr', class_='even')[1]
它[1]
在行尾表示返回的东西是单个标签而不是标签列表,而是在您的下一行:
a = tr[2].find('td')
您尝试对没有索引的对象进行索引,我建议您实现目标的方法是将这一行替换为:
tds = tr.find_all("td") # returns a list of td's within the tr
a = tds[2] # accesses RIFLEMAN
b = tds[1] # accesses Pupp.
推荐阅读
- python - 如何使用 beginMoveRows 在 QTableView (QAbstractTableModel) 中移动一行?
- angular - 为 Angular 中的每个 mdb-carousel 项目添加间隔
- nestjs - 无缝支持从 NestJS 控制器序列化为 json 和 csv
- python - 尝试使用 json.load inPython 加载时出现 Json 解码器错误
- django - 在 Vue 3 中设置全局 Axios 标头
- c++ - TBB:不能使用数组类型?
- python - 从 flaks api 发送字节流给出 unicode 错误
- php - 如何使用 web.config 将 PHP 文件添加到每个页面?
- javascript - 您如何使 Bootstrap 导航栏徽标和菜单分别在左侧和右侧具有“填充”?
- jupyter-notebook - ipywidgets 下拉小部件:如何根据 onchange 事件上的选定下拉选项填充嵌套小部件?