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.