3

から値 colspan と rowspan を解析することについてお聞きしたいと思います<table>。たとえば、次のようにします。

<table cellpadding="2" cellspacing="2" border="1" width="50%">
<tbody>
  <tr>
    <td valign="top" rowspan="2" colspan="1" align="center">NO<br>
    </td>
    <td valign="top" rowspan="1" colspan="3" align="center">NAMA<br>
    </td>
    <td valign="top" rowspan="1" colspan="2" align="center">TELEPON<br>
    </td>
    <td valign="top" rowspan="2" colspan="1" align="center">KODE<br>
    </td>
  </tr>
  <tr>
    <td valign="top" align="center">DEPAN<br>
    </td>
    <td valign="top" align="center">TENGAH<br>
    </td>
    <td valign="top" align="center">BELAKANG<br>
    </td>
    <td valign="top" align="center">KODE<br>
    </td>
    <td valign="top" align="center">NO TLP<br>
    </td>
  </tr>
  <tr>
    <td valign="top" align="center">1<br>
    </td>
    <td valign="top">Ani<br>
    </td>
    <td valign="top">Tiara<br>
    </td>
    <td valign="top">Ramadika<br>
    </td>
    <td valign="top" align="center">021<br>
    </td>
    <td valign="top" align="center">8466729<br>
    </td>
    <td valign="top" align="center">17412<br>
    </td>
  </tr>
  <tr>
    <td valign="top" align="center">2<br>
    </td>
    <td valign="top">Dia<br>
    </td>
    <td valign="top">Andari<br>
    </td>
    <td valign="top">Putri<br>
    </td>
    <td valign="top" align="center">022<br>
    </td>
    <td valign="top" align="center">5930290<br>
    </td>
    <td valign="top" align="center">18291<br>
    </td>
  </tr>
  <tr>
    <td valign="top" align="center">3<br>
    </td>
    <td valign="top">Rangga<br>
    </td>
    <td valign="top">Dimas<br>
    </td>
    <td valign="top">Putra<br>
    </td>
    <td valign="top" align="center">023<br>
    </td>
    <td valign="top" align="center">8349829<br>
    </td>
    <td valign="top" align="center">13901<br>
    </td>
  </tr>
  <tr>
    <td valign="top" align="center">4<br>
    </td>
    <td valign="top">Niko<br>
    </td>
    <td valign="top">Reza<br>
    </td>
    <td valign="top">Anggara<br>
    </td>
    <td valign="top" align="center">024<br>
    </td>
    <td valign="top" align="center">4284982<br>
    </td>
    <td valign="top" align="center">21211<br>
    </td>
  </tr>

</tbody>  
</table>

次のように、HTML 解析に python を使用します。

from bs4 import BeautifulSoup

soup = BeautifulSoup(html)
t = soup.find("table")
dat = [ map(str, row.findAll('td', { 'rowspan' })) for row in t.findAll("tr") ]
print dat[1]

しかし、それでも、 の値を取得する方法が本当に混乱していますcolspan

colspan解析タグ テーブルは既に取得していますが、属性の値を取得する方法がわかりません。正規表現を使用してみましたが、成功しませんでした。

4

2 に答える 2

1

CSS セレクターの使用をお勧めします。

from bs4 import BeautifulSoup
s = open("colspan_rowspan.html").read()
soup = BeautifulSoup(s)

# select all td children of tr that have both colspan & rowspan
tags = soup.select('tr td[colspan,rowspan]')

# print out the values, for example:
print [(td['colspan'], td['rowspan']) for tags]

# will return [('1', '2'), ('3', '1'), ('2', '1'), ('1', '2')]
于 2012-11-07T05:40:16.347 に答える
-2

colspan と rowspan を使用してテーブルを解析する最も簡単な方法は、nodejs を Cheerio および Cheerio-tableparser プラグインで使用することです。

var cheerio = require('cheerio'),
    cheerioTableparser = require('cheerio-tableparser'),
    fs = require('fs');

var text = fs.readFileSync("colspan_rowspan.html", 'utf8');
$ = cheerio.load(text);
cheerioTableparser($);

data = $("table").parsetable(true, true, true);
console.log(data);

//data = > 
//[ [ 'NO', 'NO', '1', '2', '3', '4' ],
//  [ 'NAMA', 'DEPAN', 'Ani', 'Dia', 'Rangga', 'Niko' ],
//  [ 'NAMA', 'TENGAH', 'Tiara', 'Andari', 'Dimas', 'Reza' ],
//  [ 'NAMA', 'BELAKANG', 'Ramadika', 'Putri', 'Putra', 'Anggara' ],
//  [ 'TELEPON', 'KODE', '021', '022', '023', '024' ],
//  [ 'TELEPON', 'NO TLP', '8466729', '5930290', '8349829', '4284982' ],
//  [ 'KODE', 'KODE', '17412', '18291', '13901', '21211' ] ]

結果は列の配列になります。colspan および rowspan セルによってマージされたすべてのセルは、配列内で同じ値になります。

于 2016-02-03T11:17:04.693 に答える