Scrapy - Oggetti dell'elenco di selezione

Esempi di selettori sulla risposta HTML

Di seguito sono riportati alcuni degli esempi su HTMLResponse e avremo l'oggetto HTMLResponse, che viene istanziato con il selettore, mostrato come segue:

res = Selector(html_response)

Puoi selezionare il file h2 elementi dal corpo della risposta HTML, che restituisce l'oggetto SelectorList come -

>>res.xpath("//h2")

Puoi selezionare il file h2 elementi dal corpo della risposta HTML, che restituisce l'elenco di stringhe Unicode come -

>>res.xpath("//h2").extract()

Restituisce gli elementi h2.

e

>>res.xpath("//h2/text()").extract()

Restituisce il testo definito sotto il tag h2 e non include gli elementi del tag h2.

Puoi scorrere i tag p e visualizzare l'attributo class come -

for ele in res.xpath("//p"):
   print ele.xpath("@class").extract()

Esempi di selettori sulla risposta XML

Di seguito sono riportati alcuni esempi su XMLResponse e avremo l'oggetto XMLResponse, che viene istanziato con il selettore, mostrato come segue:

res = Selector(xml_response)

È possibile selezionare gli elementi della descrizione dal corpo della risposta XML, che restituisce l'oggetto SelectorList come -

>>res.xpath("//description")

Puoi ottenere il valore del prezzo dal feed XML di Google Base registrando uno spazio dei nomi come:

>>res.register_namespace("g", "http://base.google.com/ns/1.0")
>>res.xpath("//g:price").extract()

Rimozione di spazi dei nomi

Quando crei i progetti Scrapy, puoi rimuovere gli spazi dei nomi utilizzando il metodo Selector.remove_namespaces () e utilizzare i nomi degli elementi per lavorare in modo appropriato con XPaths.

Ci sono due ragioni per non chiamare la procedura di rimozione dello spazio dei nomi sempre nel progetto:

  • È possibile rimuovere lo spazio dei nomi che richiede la ripetizione del documento e la modifica di tutti gli elementi che comportano costose operazioni di scansione dei documenti da parte di Scrapy.

  • In alcuni casi, è necessario utilizzare gli spazi dei nomi e questi potrebbero entrare in conflitto con alcuni nomi di elementi e spazi dei nomi. Questo tipo di caso si verifica molto spesso.