Pythonのpyqueryを使用してページをスクレイピングしていますが、返されるタイプ、特に結果のリストを反復処理する方法に少し混乱しています。
私のHTMLが少しこのように見える場合:
<div class="formwrap">blah blah <h3>Something interesting</h3></div>
<div class="formwrap">more rubbish <h3>Something else interesting</h3></div>
<h3>
タグの内部を1つずつ取得して、タグを処理できるようにするにはどうすればよいですか?私はしようとしています:
results_page = pq(response.read())
formwraps = results_page(".formwrap")
print type(formwraps)
print type([formwraps])
for my_div in [formwraps]:
print type(my_div)
print my_div("h3").text()
これにより、次のものが生成されます。
<class 'pyquery.pyquery.PyQuery'>
<type 'list'>
<class 'pyquery.pyquery.PyQuery'>
Something interesting something else interesting
実際の反復は行われていないようです。各要素を個別に引き出すにはどうすればよいですか?
初心者からの追加の質問:周りの角かっこは何をし[a]
ていますか?特別なPyqueryオブジェクトをリストに変換しているようです。[]
標準のPython演算子ですか?
- - - アップデート - - - -
pyqueryのドキュメントで「each」関数を見つけました。しかし、私はそれを私が望むものにどのように使用するかを理解していません。の内容を印刷したいだけだとしましょう<h3>
。これにより構文エラーが発生します:なぜですか?
formwraps.each(lambda e: print e("h3").text())