python - 如何使用 Beautiful Soup 刮桌子?
问题描述
我尝试根据问题抓取表格:Python BeautifulSoup scrape tables
从顶级解决方案中,我尝试了:
HTML 代码:
<div class="table-frame small">
<table id="rfq-display-line-items-list" class="table">
<thead id="rfq-display-line-items-header">
<tr>
<th>Mfr. Part/Item #</th>
<th>Manufacturer</th>
<th>Product/Service Name</th>
<th>Qty.</th>
<th>Unit</th>
<th>Ship Address</th>
</tr>
</thead>
<tbody id="rfq-display-line-item-0">
<tr>
<td><span class="small">43933</span></td>
<td><span class="small">Anvil International</span></td>
<td><span class="small">Cap Steel Black 1-1/2"</span></td>
<td><span class="small">800</span></td>
<td><span class="small">EA</span></td>
<td><span class="small">1</span></td>
</tr>
<!----><!---->
</tbody><tbody id="rfq-display-line-item-1">
<tr>
<td><span class="small">330035205</span></td>
<td><span class="small">Anvil International</span></td>
<td><span class="small">1-1/2" x 8" Black Steel Nipple</span></td>
<td><span class="small">400</span></td>
<td><span class="small">EA</span></td>
<td><span class="small">1</span></td>
</tr>
<!----><!---->
</tbody><!---->
</table><!---->
</div>
根据解决方案,
我尝试的是:
for tr in soup.find_all('table', {'id': 'rfq-display-line-items-list'}):
tds = tr.find_all('td')
print(tds[0].text, tds[1].text, tds[2].text, tds[3].text, tds[4].text, tds[5].text)
但这仅显示第一行,
43933 Anvil International Cap Steel Black 1-1/2" 800 EA 1
后来我发现所有这些<td>
都存储在列表中。我想打印所有行。
预期输出:
43933 Anvil International Cap Steel Black 1-1/2" 800 EA 1
330035205 Anvil International 1-1/2" x 8" Black Steel Nipple 400 EA 1
解决方案
你从tr
标签开始,然后往下走td
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, "html.parser")
for tr in soup.find("table", id="rfq-display-line-items-list").find_all("tr"):
print(" ".join([td.text for td in tr.find_all('td')]))
43933 Anvil International Cap Steel Black 1-1/2" 800 EA 1
330035205 Anvil International 1-1/2" x 8" Black Steel Nipple 400 EA 1
推荐阅读
- reactjs - 如何使用选项卡在路由页面之间存储输入值
- postman - 邮递员:如何设置我的邮递员使用“pm”而不是“postman”
- javascript - Google Closure Compiler 在 let 声明中使用 JSC_CONSTANT_REASSIGNED_VALUE_ERROR 发出警告
- php - 尝试从 JSON 文件中删除值
- ionic-framework - 构建时platform.registerBackButtonAction()不起作用--prod
- php - 我在获取插入多个下拉值时遇到问题。提交后出现数据库错误
- java - 无法将 Synthetica 外观添加到我的 java 项目
- jenkins - Jenkins 管道失败且没有错误
- scala - 未找到模块:org.scala-sbt#sbt;1.1.6
- mysql - 从“C:\xampp\mysql\data”文件夹的备份中恢复 SQL 数据库