6

HTML ファイルから一部のデータを取り除こうとしています。正しいセルを取得するためのロジックをコーディングしました。今、「セル」の実際の内容を取得するのに苦労しています:

ここに私のHTMLスニペットがあります:

headerRows[0][10].contents

  [<font size="+0"><font face="serif" size="1"><b>Apples Produced</b><font size="3">       
  </font></font></font>]

これは Python [] のリスト項目であることに注意してください。

Apples Produced の値が必要ですが、取得できません。

任意の提案をいただければ幸いです

これを説明する良い本についての提案は、私の永遠の感謝を得るでしょう


その答えをありがとう。ただし、より一般的な答えはありません。セルにボールド属性がない場合

次のように言います。

 [<font size="+0"><font face="serif" size="1"><I>Apples Produced</I><font size="3">       
  </font></font></font>]

りんごの生産量

私はドキュメントを読んだり理解したりすることを学ぼうとしています。あなたの回答が役に立ちます

このヘルプに本当に感謝しています。これらの回答の最も良い点は、それらから一般化するのがはるかに簡単であることです。その後、BeautifulSoup のドキュメントから一般化することができました。私は Fortran 時代にプログラミングを学び、現在は Python を学んでおり、その力に驚かされています。BeautifulSoup はその一例です。一貫性のあるドキュメント全体を作成することは、私にとって大変なことです。

乾杯

4

3 に答える 3

5

BeautifulSoupのドキュメントには、必要なものがすべて含まれているはずですfindNext

headerRows[0][10].findNext('b').string

<b>タグに依存しないより一般的な解決策は、 text引数をに使用することです。これにより、オブジェクトfindAllのみを検索できます。NavigableString

>>> s = BeautifulSoup(u'<p>Test 1 <span>More</span> Test 2</p>')
>>> u''.join([s.string for s in s.findAll(text=True)])
u'Test 1 More Test 2'
于 2008-10-21T21:14:21.743 に答える
3
headerRows[0][10].contents[0].find('b').string
于 2009-03-10T08:30:14.033 に答える
0

必ずしも構造に依存したくない要素のグループ内のテキストを取得するのに役立つ一連のメソッドを使用して、すべての Beautiful Soup クラスを拡張する基本クラスがあります。それらの方法の 1 つが次のとおりです。

  def clean(self, val):
    if type(val) is not StringType: val = str(val)
    val = re.sub(r'<.*?>', '', s) #remove tags
    val = re.sub("\s+" , " ", val) #collapse internal whitespace
    return val.strip() #remove leading & trailing whitespace
于 2008-10-21T23:57:03.133 に答える