0

状況:

私がスクレイプする各ページには、との<input>要素がありますtitle=value=

ページに何が表示されるかわかりません。

収集したすべてのデータを、タイトルごとに1つの列を付けて、最後に1つのテーブルにまとめたいと思います。

したがって、基本的に、データの各行を他のすべての行と整列させる必要があります。行に特定の要素がない場合は、空白にする必要があります(ただし、整列を維持するために何かが必要です)。

例えば。

最初のページは次のとおりです。{animal: cat, colour: blue, fruit: lemon, day: monday}

2ページ目は次のとおりです。{animal: fish, colour: green, day: saturday}

3ページ目は:{animal: dog, number: 10, colour: yellow, fruit: mango, day: tuesday}

次に、結果のテーブルは次のようになります。

animal | number | colour | fruit | day
cat    | none   | blue   | lemon | monday
fish   | none   | green  | none  | saturday
dog    | 10     | yellow | mango | tuesday

ペアの順序を維持するのは良いことですが、title value辞書ではそうはなりません。

したがって、基本的に、すべてから列を生成する必要がありますtitles(順番に保持されていますが、どういうわけか一緒にマージされています)

考えられるすべてのタイトルを知らずに、値を入力する順序を明示的に指定せずに、これを実行するための最良の方法は何でしょうか。

4

2 に答える 2

2

マルチパスアルゴリズムが必要です。dictのリストにあるすべての削られたページを覚えておいてください。最初のパスで、このリストに目を通し、set()内のすべてのタイトルを収集し、順序を作成します(たとえば、リストに変換してアルファベット順に並べ替えます)。

2番目のパスでは、テーブルを印刷し、生成された順序を列名として使用し、必要に応じてディクショナリから値を抽出します(欠落している値を処理するためにデフォルトで空になります)。たとえば、dict.get(name、 "")を使用します。

于 2010-05-05T10:34:15.323 に答える
0

オプションのパラメーターを使用するか、代わりにオーバーロードされたコンストラクターを使用して値を設定することをお勧めします。

Page(string animal = string.empty, 
int number = -999, string colour = string.empty, day = string.empty )

それか、各キーと値のペアを型オブジェクトとして保存してから、ページからキャストします。

于 2010-05-05T10:31:50.197 に答える