#####更新######:renderContents()而不是內容[0]做了訣竅。如果有人能夠提供更好,更優雅的解決方案,我仍會保持開放!BeautifulSoup(Python)和解析HTML表格
我想解析一些網頁的所需數據。該表沒有類/標籤。所以我必須在tr內容中搜索'網站'。
手頭上的問題: 顯示td.contents工作正常,只是因爲文本,但由於某種原因沒有超鏈接?我究竟做錯了什麼?有沒有更好的方式在Python中使用bs來做到這一點?
那些暗示lxml,我有一個正在進行的線程here沒有管理員權限的centOS和lxml安裝在這個時候證明是少數。因此探索BeautifulSoup選項。
HTML樣本:
<table border="2" width="100%">
<tbody><tr>
<td width="33%" class="BoldTD">Website</td>
<td width="33%" class="BoldTD">Last Visited</td>
<td width="34%" class="BoldTD">Last Loaded</td>
</tr>
<tr>
<td width="33%">
<a href="http://google.com"></a>
</td>
<td width="33%">01/14/2011
</td>
<td width="34%">
</td>
</tr>
<tr>
<td width="33%">
stackoverflow.com
</td>
<td width="33%">01/10/2011
</td>
<td width="34%">
</td>
</tr>
<tr>
<td width="33%">
<a href="http://stackoverflow.com"></a>
</td>
<td width="33%">01/10/2011
</td>
<td width="34%">
</td>
</tr>
</tbody></table>
Python代碼至今:
f1 = open(PATH + "/" + FILE)
pageSource = f1.read()
f1.close()
soup = BeautifulSoup(pageSource)
alltables = soup.findAll("table", {"border":"2", "width":"100%"})
print "Number of tables found : " , len(alltables)
for table in alltables:
rows = table.findAll('tr')
for tr in rows:
cols = tr.findAll('td')
for td in cols:
print td.contents[0]
應該是(即是否缺少`>`?) – unutbu 2011-01-25 18:12:46
更新了HTML,遺漏了>,仍然沒有。 – ThinkCode 2011-01-25 19:02:10