Ich Scraping eine Seite mit Python Pyquery, und ich bin irgendwie verwirrt durch die Typen, die es zurückgibt, und insbesondere, wie man über eine Liste von Ergebnissen iterieren.Iterieren über Objekte in Pyquery
Wenn mein HTML ein bisschen wie folgt aussieht:
<div class="formwrap">blah blah <h3>Something interesting</h3></div>
<div class="formwrap">more rubbish <h3>Something else interesting</h3></div>
Wie kann ich das Innere der <h3>
Tags bekommen, eins nach dem anderen, so kann ich sie bearbeiten? Ich versuche:
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()
Dies erzeugt:
<class 'pyquery.pyquery.PyQuery'>
<type 'list'>
<class 'pyquery.pyquery.PyQuery'>
Something interesting something else interesting
Es sieht aus, als gäbe es keine wirkliche Iteration geht. Wie kann ich jedes Element einzeln herausziehen?
Zusätzliche Frage von einem Neuling: Was sind die eckigen Klammern um [a]
tun? Es sieht so aus, als ob es ein spezielles Pyquery-Objekt in eine Liste konvertiert. Ist []
ein Standard-Python-Operator?
------ -------- UPDATE
Ich habe ein 'jeder' function in the pyquery docs gefunden. Ich verstehe jedoch nicht, wie ich es für das verwenden soll, was ich will. Sagen wir, ich möchte nur den Inhalt der <h3>
ausdrucken. Dies führt zu einem Syntaxfehler: Warum?
formwraps.each(lambda e: print e("h3").text())