私はlxmlが初めてで、pythonがまったく初めてで、次の解決策を見つけることができませんでした:
3 つの列と行 3 から始まる行数が定義されていないいくつかのテーブルをインポートする必要があります。
いずれかの行の 2 列目が空の場合、この行は破棄され、テーブルの処理は中止されます。
次のコードは、テーブルのデータを正常に出力します (ただし、後でデータを再利用することはできません)。
from lxml.html import parse
def process_row(row):
for cell in row.xpath('./td'):
print cell.text_content()
yield cell.text_content()
def process_table(table):
return [process_row(row) for row in table.xpath('./tr')]
doc = parse(url).getroot()
tbl = doc.xpath("/html//table[2]")[0]
data = process_table(tbl)
これは最初の列のみを出力します:(
for i in data:
print i.next()
以下は、3 行目のみをインポートし、後続の行はインポートしません。
tbl = doc.xpath("//body/table[2]//tr[position()>2]")[0]
行3からすべてのデータをtblに取得し、それを配列にコピーして、lxml依存関係のないモジュールに処理できるようにするための優れたソリューションを知っている人はいますか?
助けてくれてありがとう、アレックス