Excelファイルのリンクから同じ方法でテーブルを取得しようとしています.以下のコードを使用してテーブルを取得しています.
#Getting particular table from the page and sending to excel file
page = urllib2.urlopen('http://developer.android.com/about/dashboards/index.html').read()
soup = BeautifulSoup(page)
a = soup('div', {'class' : 'col-5'})[0]
with open('android version 2013_01_18.csv', 'wb') as csvfile:
csvout = csv.writer(csvfile, delimiter=',')
csvout.writerow(["Version","Codename","API", "Distribution"])
for table in a.findAll('table'):
print '#'
print '# Table'
print '# Fields: ' + ','.join([tr.text for tr in table.findAll('th')])
for row in table.findAll('tr'):
csvout.writerow([tr.text for tr in row.findAll('td')])
次のようにExcelで出力を取得しています:
1.6 Donut 4 0.20%
2.1 Eclair 7 2.40%
2.2 Froyo 8 9.00%
"2.3 - 2.3.2
" Gingerbread 9 0.20%
"2.3.3 - 2.3.7
" 10 47.40%
3.1 Honeycomb 12 0.40%
3.2 13 1.10%
4.0.3 - 4.0.4 Ice Cream Sandwich 15 29.10%
4.1 Jelly Bean 16 9.00%
4.2 17 1.20%
ここで問題は、マージ セルの直後の行にあります。td カウントは 4 ではなく 3 であるため、マージ セルを作成するためにコードで rowspan=2 が使用されていることがわかりましたが、この情報を使用してデータを取得する方法を知りたいです。まったく同じです。以下は HTML 構造です
<tr>
<td>
<a href="/about/versions/android-2.3.html">2.3 - 2.3.2</a>
</td>
<td rowspan="2">Gingerbread</td>
<td>9</td>
<td>0.2%</td>
</tr>
<tr>
<td>
<a href="/about/versions/android-2.3.3.html">2.3.3 - 2.3.7 </a>
</td>
<td>10</td>
<td>47.4%</td>
</tr>