Vai al contenuto principale

Come escludere elementi pubblicitari indesiderati da un loop utilizzando XPath

Aggiornato più di un anno fa

Quando creiamo un'azione loop item per estrarre dati da un sito web, a volte l'elenco può includere diversi elementi di Annunci non desiderati.

Prendiamo Yelp come esempio, il loop generato automaticamente potrebbe includere tutti i risultati sponsorizzati di cui non abbiamo bisogno.

sponsored_results.jpg

Cosa dobbiamo fare se vorremo raccogliere solo gli articoli non-ads?

Un modo conveniente per farlo è eliminare le righe di dati indesiderate facendo clic sull'icona del cestino sotto la colonna Action.

Tuttavia, affinché funzioni per ogni singolo elemento non necessari, dobbiamo modificare l'XPath per il loop item in modo che individui solo gli elementi non pubblicitari.

Controlla il codice sorgente degli elementi in Chrome DevTools, vedrai che non ci sono differenze sostanziali tra elementi pubblicitari e non pubblicitari.

Quindi dobbiamo restringere la nostra selezione utilizzando XPath. È ora di un quiz su XPath!

Avresti bisogno di un link di esempio per seguire i passaggi:

Un modo semplice per individuare precisamente la selezione è aggiungere più condizioni al tuo XPath:

(1) I dati di cui abbiamo bisogno sono elencati nella sezione "All results", quindi è da lì che iniziamo la nostra raccolta.

(2) Ogni pagina contiene solo dieci risultati, quindi dobbiamo terminare la nostra selezione dopo aver ottenuto i primi dieci risultati.

L'XPath finale sarebbe:

//h2[contains(text(),'All "restaurant" results')]/ancestor::li/following-sibling::li[position()<11]

Ora Octoparse escluderà tutti gli articoli promozionali indesiderati dal nostro elenco.

Hai ricevuto la risposta alla tua domanda?