ホームページ >バックエンド開発 >Python チュートリアル >Python で BeautifulSoup を使用して HTML テーブルからデータを抽出し、特に余分な行や入力要素などの複雑さを処理するにはどうすればよいでしょうか?
Python で BeautifulSoup を使用してテーブルからデータを抽出する
HTML ドキュメントを解析する場合、テーブルからデータを抽出する機能は一般的な要件です。 Web スクレイピング用の人気のある Python ライブラリである BeautifulSoup は、HTML を解析してそのコンテンツにアクセスするための強力な方法を提供します。
BeautifulSoup を使用したテーブルの解析
のプロセスを説明するにはBeautifulSoup を使用してテーブルを解析するときに、「NYC 駐車券パーサー」の例を考えてみましょう。このページの HTML 応答は非常に複雑で、目標は、各チケットに関する情報を含む項目テーブルからデータを抽出することです。
これを達成するには、まず HTML 内のテーブルを識別する必要があります。独自のクラスを使用した応答:
<code class="python">table = soup.find("table", { "class" : "lineItemsTable" })</code>
テーブルが見つかったら、行を反復処理してデータを抽出できます:
<code class="python">for row in table.findAll("tr"): cells = row.findAll("td") print cells</code>
ただし、このアプローチでは HTML のみが提供されます。テーブル内の各行の要素。実際のテキスト コンテンツを取得するには、各セルからテキストを抽出する必要があります。
<code class="python">data = [] for row in table.findAll("tr"): cols = row.findAll("td") cols = [ele.text.strip() for ele in cols] data.append([ele for ele in cols if ele])</code>
このコードはテーブルの行を反復処理し、セルからテキストを抽出し、先頭または末尾の空白を削除します。結果はリストのリストであり、各内部リストはテーブル内の行を表します。
複雑さの処理
この例では、テーブルの最後の行支払い金額が含まれますが、これはテーブル データの一部ではありません。これに対処するには、特定の要素数未満の行をフィルターで除外します。
<code class="python">data = [row for row in data if len(row) >= 7]</code>
さらに、各行の最後の列には入力テキスト ボックスが含まれています。これは、input 要素の前のテキストを抽出することで処理できます。
<code class="python">data = [[col.split()[0] if col.find("input") else col for col in row] for row in data]</code>
結論
これらの変更により、品目テーブルからデータを効果的に抽出できます。 Python で BeautifulSoup を使用します。コードを特定の要件に合わせて調整し、発生する可能性のある追加の複雑さに対処することを忘れないでください。
以上がPython で BeautifulSoup を使用して HTML テーブルからデータを抽出し、特に余分な行や入力要素などの複雑さを処理するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。