我嘗試根據問題抓取表格: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 hljs-string">">800</span></td>
<td><span hljs-string">">EA</span></td>
<td><span hljs-string">">1</span></td>
</tr>
<!----><!---->
</tbody><tbody id="rfq-display-line-item-1">
<tr>
<td><span hljs-string">">330035205</span></td>
<td><span hljs-string">">Anvil International</span></td>
<td><span hljs-string">">1-1/2" x 8" Black Steel Nipple</span></td>
<td><span hljs-string">">400</span></td>
<td><span hljs-string">">EA</span></td>
<td><span hljs-string">">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
uj5u.com熱心網友回復:
你從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
uj5u.com熱心網友回復:
您可以使用 css 選擇器來做到這一點,如下所示:
for tr in soup.select('table#rfq-display-line-items-list tbody tr'):
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
330035205 Anvil International 1-1/2" x 8" Black Steel Nipple 400 EA 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/331646.html
