Ich versuche, jeden Titel dieser mailing list zu extrahieren, während Sie registrieren, wie viele Antworten jeder Thread hat.Scrapy kann "tbody" und "ul" Elemente nicht identifizieren, wie von Firebug
Nach Firebug, die Xpath zum <ul>
dass die Titel alles enthält:
/html/Körper/table [2]/tbody/tr 1/td [2]/table/tbody/tr/td/ul
Allerdings, wenn ich diese direkt in Scrapy Shell einfügen, wird es eine leere Liste ergeben:
scrapy shell http://seclists.org/fulldisclosure/2002/Jul/index.html
response.xpath('/html/body/table[2]/tbody/tr[1]/td[2]/table/tbody/tr/td/ul')
[]
Nach einigen Versuch und Irrtum (da ich Ich konnte aus der Dokumentation keine Möglichkeit heraus finden, die unmittelbaren Unterelemente eines gegebenen Selectors aufzulisten (bitte lassen Sie es wissen, wenn Sie eines kennen), ich fand heraus, dass das Element "tbody" nicht auf Xpath funktionierte. Durch diese zu entfernen, konnte ich /td
navigieren:
almost_email_threads = response.xpath('/html/body/table[2]/tr[1]/td[2]/table/tr/td')
Allerdings, wenn ich jetzt versuchen, zu erreichen „UL“ es wird nicht funktionieren:
email_threads.xpath('/ul')
[]
Nun, was verwirrt mich am meisten dass das Laufen ist:
response.xpath('/html/body/table[2]/tr[1]/td[2]/table/tr/td//ul')
wird geben Sie mir die uL, aber nicht in der gleichen Reihenfolge auf der Website wie erscheinen. Es überspringt Fäden und in verschiedenen Reihenfolgen. Außerdem scheint es unmöglich zu sein, die Anzahl der Antworten pro Thread zu zählen.
Was fehlt mir hier? Es ist eine Weile her, seit ich Scrapy benutzt habe, aber ich kann mich nicht erinnern, dass es so schwierig ist, es herauszufinden, und Tutorials aus welchem Grund auch immer ziehen weder auf Bing noch auf Google für mich.
Vielen Dank. Es scheint hier zu funktionieren. Ich werde warten, um zu sehen, ob jemand die Antwort weiß, wie man die Selektoren auf Spacy auflistet oder einen anderen Tipp geben möchte, wenn nicht, werde ich deine Antwort hier akzeptieren. Ich habe Ihre Antwort ebenfalls hochgestuft. Weißt du, warum sowohl meine Frage als auch deine Antwort abgelehnt wurden? Es ist schwer zu verbessern, wenn sie nicht kommentieren, um zu verbessern, anstatt einfach zu downbooten. –
Ich habe die Antwort aktualisiert, um Ihnen zu zeigen, wie Sie die Anzahl der Antworten und die Kinder eines Selektors erhalten.Was die Ablehnung Ihrer Frage betrifft, kann ich nur spekulieren; es könnte argumentiert werden, dass es kein MCV-Beispiel und mindestens einen Formatierungsfehler enthält. Ein Blick auf http://stackoverflow.com/help/how-to-ask könnte helfen. Aber ich denke, es ist einfach unhöflich, einen Kommentar abzugeben, ohne einen erklärenden Kommentar abzugeben. – Markus
Danke schön. Ich habe deine Antwort angenommen. –