最近、scrapyライブラリの作業が開始されました。私は彼らが販売している製品の種類ごとに若干異なる表を持つウェブサイトから掻き集めようとしています。最終的には、データを使用してオブジェクトの属性を設定します。今のところ、JSON形式に抽出するだけです。ここhtmlテーブルの任意の数の行(キー:値のペア)を解析するためのscrapyの使用
は、例えばテーブルである:
<table id="table_1">
<tr id="row_1">
<td>cell_1</td>
<td>cell_2</td>
<td>cell_3</td>
</tr>
<tr id="row_2">
<td>cell_4</td>
<td>cell_5</td>
<td>cell_6</td>
</tr>
<tr id="row_n">
<td>cell_x</td>
<td>cell_y</td>
<td>cell_z</td>
</tr>
</table>
各列は異なる項目、すなわち、小中規模または大規模のTシャツを表します。 あり、上記の表では3つの項目になりますので、アイテムは次のようになります。行と列の数があるが、それらは、no「に欠けている」または「余分な」細胞とよく構造化テーブルです
Item 1 {
row_1:cell_1
row_2:cell_4
row_n:cell_x
}
Item 2 {
row_1:cell_2
row_2:cell_5
row_n:cell_y
}
Item 3 {
row_1:cell_3
row_2:cell_6
row_n:cell_z
}
任意。
私が持っていた難しさは、アイテムごとにではなく、スクラップする前にFieldクラスの数を定義するためにアイテムクラスを必要とするためです。私はこのプロセスを実行したい何百ものテーブルを持っています。
これまで読んでいただきありがとうございました。 :)
解決策:@warawukあなたの助けをありがとう。私はあなたの提案を使用し、トリプルネストされたリストで終わった。おそらく理想的な、それは私が彼らと一緒に作業を続けると値を抽出するのに十分な些細ではありません。
{"tRows":
[[["row1"], ["cell1", "cell2"]]
[["row2"], ["cell3", "cell4"]]
[["row3"], ["cell5", "cell6"]]
[["row4"], ["cell7", "cell8"]]] x100s of tables
}
行の任意の数に対処するために、私はそれぞれの行からIDを抽出するために正規表現を使用してカウントそれら。範囲を使用する単純なループ(len(rowNames))と、文字列の連結によってジョブが終了しました。
はい、正しいです。このフォームにデータを取得することは、主要なハードルです。サブタスク1は、テーブルごとに任意の数の行をスクラップし、このような形式にすることを定義しましょう。私のスキル項目に関する知識に基づいて、フィールドの数とその名前を事前に定義する必要があるようです。この場合、スクレイプ時にそれらのフィールドを特定する必要があります。 –
Itemインスタンスに含める内容は何ですか? – warvariuc
各項目のkey:valueのペアは、表の各行について 'row_1': 'cell_1'、 'row_2': 'cell_1'などのように表示されます。各行はフィールドを表すことができます。 –