Scrapy - Suggerimenti Xpath

Utilizzo di nodi di testo in una condizione

Quando si utilizzano nodi di testo in una funzione stringa XPath, utilizzare .(dot) invece di usare .//text(), perché questo produce la raccolta di elementi di testo chiamata come node-set.

Ad esempio:

from scrapy import Selector
val = Selector(text = '<a href = "#">More Info<strong>click here</strong></a>')

Se stai convertendo un set di nodi in una stringa, utilizza il seguente formato:

>>val.xpath('//a//text()').extract()

Mostrerà l'elemento come -

[u'More Info',u'click here']

e

>>val.xpath("string('//a[1]//text())").extract()

Risulta l'elemento come -

[u'More Info']

Differenza tra // nodo [1] e (// nodo) [1]

Il //node[1]mostra tutti i primi elementi definiti sotto i rispettivi genitori. Il(//node)[1] mostra solo il primo elemento del documento.

Ad esempio:

from scrapy import Selector
val = Selector(text = """
   <ul class = "list">
      <li>one</li>
      <li>one</li>
      <li>one</li>
   </ul>
   
   <ul class = "list">
      <li>four</li>
      <li>five</li>
      <li>six</li>
   </ul>""")
res = lambda x: val.xpath(x).extract()

La riga seguente mostra tutte le prime li elementi definiti sotto i rispettivi genitori -

>>res("//li[1]")

Visualizzerà il risultato come:

[u'<li>one</li>', u'<li>four</li>']

Puoi ottenere il primo li elemento del documento completo mostrato come segue -

>>res("(//li)[1]")

Visualizzerà il risultato come:

[u'<li>one</li>']

Puoi anche visualizzare tutti i primi li elementi definiti in ul genitore -

>>res("//ul//li[1]")

Visualizzerà il risultato come:

[u'<li>one</li>', u'<li>four</li>']

Puoi ottenere il primo li elemento definito in ul genitore nell'intero documento mostrato come segue -

>>res("(//ul//li)[1]")

Visualizzerà il risultato come:

[u'<li>one</li>']

Riferimento ai selettori incorporati

I selettori incorporati includono la seguente classe:

class scrapy.selector.Selector(response = None, text = None, type = None)

La classe precedente contiene i seguenti parametri:

  • response - È una risposta HTML e una risposta XML che seleziona ed estrae i dati.

  • text - Codifica tutti i caratteri utilizzando la codifica dei caratteri UTF-8, quando non è disponibile una risposta.

  • type- Specifica i diversi tipi di selettore, come html per HTML Response, xml per XMLResponse tipo e nessuno per il tipo predefinito. Seleziona il tipo a seconda del tipo di risposta o imposta su html per impostazione predefinita, se viene utilizzato con il testo.

I selettori incorporati contengono i seguenti metodi:

Suor n Metodo e descrizione
1

xpath(query)

Corrisponde ai nodi in base alla query xpath e fornisce i risultati come istanza di SelectorList. La query con parametri specifica la query XPATH da utilizzare.

2

css(query)

Fornisce il selettore CSS e restituisce l'istanza SelectorList. La query del parametro specifica il selettore CSS da utilizzare.

3

extract()

Mostra tutti i nodi corrispondenti come un elenco di stringhe Unicode.

4

re(regex)

Fornisce l'espressione regolare e fa emergere i nodi corrispondenti come un elenco di stringhe Unicode. Il parametro regex può essere utilizzato come un'espressione regolare o una stringa, che viene compilata in un'espressione regolare utilizzando il metodo re.compile (regex).

5

register_namespace(prefix, uri)

Specifica lo spazio dei nomi utilizzato nel selettore. Non è possibile estrarre i dati senza registrare lo spazio dei nomi dallo spazio dei nomi non standard.

6

remove_namespaces()

Elimina lo spazio dei nomi e dà il permesso di attraversare il documento usando gli xpaths senza spazio dei nomi.

7

__nonzero__()

Se il contenuto è selezionato, questo metodo restituisce true, altrimenti restituisce false.

Oggetti SelectorList

class scrapy.selector.SelectorList

Gli oggetti SelectorList contengono i seguenti metodi:

Suor n Metodo e descrizione
1

xpath(query)

Utilizza il metodo .xpath () per gli elementi e fornisce i risultati come istanza di SelectorList. La query con i parametri specifica gli argomenti come definiti nel metodo Selector.xpath ().

2

css(query)

Utilizza il metodo .css () per gli elementi e restituisce i risultati come istanza di SelectorList. La query con i parametri specifica gli argomenti come definiti nel metodo Selector.css ().

3

extract()

Mette in evidenza tutti gli elementi della lista usando il metodo .extract () e restituisce il risultato come un elenco di stringhe Unicode.

4

re()

Usa il metodo .re () per gli elementi e mette in evidenza gli elementi come un elenco di stringhe Unicode.

5

__nonzero__()

Se l'elenco non è vuoto, questo metodo restituisce true, altrimenti restituisce false.

Gli oggetti SelectorList contengono alcuni dei concetti come spiegato in questo collegamento .