長さが73,033の要素の長いリストがあります。私はそれからコンテキストを取得したいと思います。リストでは、各要素は同じ構造を持ち(次のコードのブロックが役に立つ場合)、<div align="center" class="photocaption"> Author/Designer Carleton Varney with Jim Druckman </div>
のようになります。私が得ることに興味を持ってすることは長いリストをループする便利な方法があるかどうか、私は疑問に思ってテキストAuthor/Designer Carleton Varney with Jim Druckman.
HTMLタグで73033要素のリストを再帰してコンテキストを取得します
メインコード
NewSoups = [BeautifulSoup(NewR) for NewR in NewRs].
captions = [soup.find_all("div", class_ = "photocaption") for soup in NewSoups]
flattened_captions = []
for x in captions:
for y in x:
flattened_captions.append(y)
print(len(flattened_captions)) #73033
import re
results = [re.sub('<[^>]*>', '', y) for y in flattened_captions] #where the error comes from
エラー
Traceback (most recent call last):
File "picked.py", line 22, in <module>
results = [re.sub('<[^>]*>', '', y) for y in flattened_captions]
File "/opt/conda/lib/python2.7/re.py", line 155, in sub
return _compile(pattern, flags).sub(repl, string, count)
TypeError: expected string or buffer
です<div ></div>
そうでない場合は、私が望むすべてのテキストを抽出する最良の方法は何でしょうか?どうもありがとうございました。
はBeautifulSoupについては何も知らないが、私はflattened_captions' '内のオブジェクトは、いくつかの種類の'のgetText() 'や'テキスト() 'メソッドを持っていることを推測しているテストするには
あなたのためにdivのテキストコンテンツを単純に抽出します。 – Welbog
ありがとう@Welbog、 'AttributeError: 'list'オブジェクトに属性 'getText''がなく、' AttributeError:' list 'オブジェクトに属性' text''がありません。 – achimneyswallow
したがって、キャプションのリストにHTML要素を表すリストが含まれていますか?それは私には分かりません。私は 'soup.find_all'によって返される型についてのドキュメンテーションを見つけようとします。返すものは要素のテキストを取得するメソッドを持たなければならないからです。 – Welbog