現在、Python と BeautifulSoup を使用して Web サイトのデータをスクレイピングしています。次のようにフォーマットされたテーブルからセルを取得しようとしています:
<tr><td>1<td><td>20<td>5%</td></td></td></td></tr>
上記の HTML の問題は、BeautifulSoup がそれを 1 つのタグとして読み取ることです。<td>
最初の と 3 番目の から値を取得する必要があり<td>
ます。それぞれ 1 と 20 になります。
残念ながら、これについてどうすればよいかわかりません。<td>
テーブルの各行の1 番目と 3 番目のタグを BeautifulSoup に読み取らせるにはどうすればよいですか?
アップデート:
私は問題を理解しました。html.parser
BeautifulSoupのデフォルトの代わりに使用していました。デフォルトに切り替えると、問題はなくなりました。また、回答に記載されている方法を使用しました。
また、さまざまなパーサーが壊れたコードで非常に気まぐれであることもわかりました。たとえば、デフォルトのパーサーは 192 行目以降の読み取りを拒否しましたhtml5lib
が、ジョブは完了しました。テーブル全体の解析に問題がある場合はlxml
、 、html
、およびを使用してみてください。html5lib