2

多数のhtmlテーブルからデータを取得するスクリプトを開発しようとしています。1つの問題は、列見出しを作成するための情報を含む行の数が不確定であるということです。ヘッダー行のセットの最後の行には、値を持つ各セルの属性border-bottomがあることがわかりました。したがって、属性border-bottomを持つセルを見つけることにしました。ご覧のとおり、リストを初期化しました。私は、borderCellsリストに含まれる各セルの親を見つけることを意図していました。ただし、このコードを実行すると、1つのセル、つまり属性border-bottomを持つallCellsの最初のセルがリストborderCellsに追加されます。参考までに、allCellsには​​193個のセルがあり、そのうち9個にはattrborder-bottomがあります。したがって、borderCellsリストに9つのメンバーが含まれることを期待していました。どんな助けでも大歓迎です。

borderCells=[]
for each in allCells:
if each.find(attrs={"style": re.compile("border-bottom")}):
    borderCells.append(each)
4

3 に答える 3

3

何か理由はありますか

borderCells = soup.findAll("td", style=re.compile("border-bottom")})

うまくいきませんか?元のテーブルの説明がかなりあいまいであり、 allCells がどうあるべきかが明確ではないため、何を求めているのかを正確に把握するのはちょっと難しいです。

作業している HTML の代表的なサンプルと、その表から引き出された「正しい」結果を提示することをお勧めします。

于 2008-10-18T23:35:32.567 に答える
0

ご存知のように、コンピュータは常に正しいものです。答えは、attrs が html のさまざまなものにあるということです。私がモデル化していたのは、次のような html でした:

<TD nowrap align="left" valign="bottom">
<DIV style="border-bottom: 1px solid #000000; width: 1%; padding-bottom: 1px">
<B>Name</B>
</DIV>
</TD>

style="border-bottom などのファイル内の他の場所は次のようになります。

<TD colspan="2" nowrap align="center" valign="bottom" style="border-bottom: 1px solid 00000">
<B>Location</B>
</TD>

そのため、質問を変更して、属性が div レベルではなく td レベルにあるセルを特定する方法を理解する必要があります

于 2008-10-18T23:36:05.653 に答える
0

私はそれをテストしましたが、誰かが彼らの答えの1つを取り去りました。助けてくれてありがとう。両方の答えがうまくいき、質問を投稿する方法についてもう少し学びました。しばらくコードを見つめた後、PythonとBeautifulSoupについてもっと学ぶかもしれません

于 2008-10-18T23:45:51.610 に答える