Ricerca nel sito web

4 modi per cercare sul Web dal terminale Linux


Che tu sia un abitante della riga di comando confermato o semplicemente un curioso del terminale, forse ti sei chiesto quanto sia facile cercare sul Web con un semplice comando di testo. Bene, Linux è Linux, ci sono diverse opzioni a tua disposizione.

Il modo più familiare: Google in un browser

Ammettiamolo, Google è stato così dominante negli ultimi 25 anni che il nome del motore di ricerca è diventato un verbo che significa "cercare su Internet". È probabile che oggi utilizzi Google in un browser web grafico e qualsiasi alternativa deve funzionare allo stesso modo.

Pertanto, la ricerca su Google in un browser, dalla riga di comando anziché da una GUI, sarà probabilmente il punto di partenza predefinito. Potresti già utilizzare un browser basato su testo come Lynx; In caso contrario, dovrai prepararti per un periodo di adattamento. La visualizzazione di una versione di solo testo di un sito Web esporrà tutti i suoi difetti, dalla mancanza di alt-text a un'eccessiva dipendenza da JavaScript.

Detto questo, l'interfaccia di ricerca di Google è nota per il suo minimalismo e questo aiuta molto quando la si visualizza in un browser di testo:

È abbastanza facile accedere alla casella di ricerca, inserire la ricerca e vedere i risultati. Puoi anche andare immediatamente alla pagina dei risultati, se riesci a ricordare l'URL e il parametro:

        $ lynx http://www.google.com/search?q=search+from+commandline

    

Esplorare questi risultati, però, non è un'esperienza altrettanto piacevole:

Potresti preferire utilizzare un servizio diverso. DuckDuckGo è un motore di ricerca incentrato sulla privacy che utilizza un vasto numero di fonti, tra cui Bing, per i suoi risultati. Con un browser di testo, ha un'interfaccia ancora più minimale di quella di Google:

E i risultati di ricerca di DuckDuckGo sono molto più facili da leggere rispetto a quelli di Google, nonostante siano ancora di solo testo. Sono chiaramente numerati e separati da uno spazio bianco:

L'altra opzione significativa è Bing, ma ho trovato il motore di ricerca di Microsoft difficile da usare con un browser di testo. Infatti, se hai davvero bisogno di usare Bing, ti consiglio di andare direttamente ai suoi risultati piuttosto che provare a usare il suo modulo di ricerca:

        $ lynx "https://www.bing.com/search?q=search+from+commandline"

    

Un terminale front-end per DuckDuckGo: ddgr

Se sei soddisfatto del servizio di DuckDuckGo, allora ci sono altre buone notizie sotto forma di client terminale. ddgr è uno strumento a riga di comando, scritto in Python, che cerca in DuckDuckGo. Presenta i risultati di ricerca nel tuo terminale, ciascuno con un titolo, una descrizione e un dominio o un URL chiari.

Per impostazione predefinita, ddgr opera in una modalità interattiva che fornisce il modo più semplice per aprire un risultato specifico. Inizia inserendo una ricerca sulla riga di comando:

        ddgr linux

    

ddgr visualizzerà una pagina di risultati, dieci dei quali per impostazione predefinita:

Nella parte inferiore, ddgr presenta una riga di comando che è possibile utilizzare in modo interattivo per perfezionare i risultati o intraprendere ulteriori azioni. Immettere il numero del risultato che si desidera visualizzare. Se hai configurato un browser di terminale, utilizzando la variabile d'ambiente BROWSER ampiamente supportata, si aprirà e mostrerà il risultato che hai scelto. Se preferisci, puoi anche avere i risultati aperti nel tuo browser grafico.

Risultati di ricerca limitati con l'API DuckDuckGo

A prima vista, l'API di DuckDuckGo sembra promettente ed è molto facile da usare. Ad esempio, è possibile ottenere un elenco di risultati di risposta immediata in formato JSON utilizzando questo endpoint:

            https://api.duckduckgo.com/?q=<search-term>&format=json

    

Con curl e uno strumento come jq per analizzare JSON, puoi avvicinarti a ottenere risultati utili in un formato che può essere utilizzato per lo scripting e l'ulteriore elaborazione:

        $ curl -s 'https://api.duckduckgo.com/?q=linux&format=json' |
    jq -r '.AbstractURL'

    

Tuttavia, questi risultati sono molto limitati a causa del modo in cui DuckDuckGo concede in licenza i suoi risultati sindacati. Vale la pena sperimentare con i termini di ricerca nel contesto delle proprie esigenze, ma assicurarsi di rendersi conto che questo approccio non produrrà gli stessi risultati di una ricerca su duckduckgo.com.

Un'API di ricerca completa di terze parti, a un costo

SerpApi è un'alternativa non ufficiale all'API di DuckDuckGo. La differenza è che può funzionare su diversi motori di ricerca e fornisce risultati di ricerca full-text. Lo svantaggio è che dovrai pagare o gestire il limite mensile di 100 ricerche sul piano gratuito. Se riesci ad accettare queste limitazioni, SerpApi è una buona scelta per i risultati di ricerca con script:

        $ curl -s 'https://serpapi.com/search?engine=duckduckgo&q=<search-term>&api_key=<api-key>' |
   jq '.organic_results[0]'

    

Sebbene HTTPS aiuti a prevenire alcuni tipi di fughe di dati, digitare la chiave API sulla riga di comando è un rischio per la sicurezza. Per mitigare questo problema, esamina le opzioni di curl, in particolare -K, -G e -d.

L'esecuzione di questo comando ti darà un oggetto che rappresenta il primo risultato della ricerca da DuckDuckGo:

L'API completa ha molte opzioni e supporta diversi provider di ricerca, con un comprensibile focus su Google. Ma il prezzo è costoso (75 dollari al mese per un massimo di 5.000 ricerche), quindi è più appropriato per il lavoro professionale.


Ognuno di questi metodi di ricerca Web da riga di comando ha una curva di apprendimento e presenta vantaggi e svantaggi. Questo offre una varietà di opzioni, quindi ti consigliamo di avere una buona comprensione di ciò che vuoi ottenere prima di stabilirti su uno. Personalmente, penso che ddgr offra il miglior compromesso tra usabilità e funzionalità.