Come affrontare discussioni di Google Gruppi crawler
-
18-09-2019 - |
Domanda
come un esercizio di RSS Vorrei essere in grado di navigare attraverso tutte le discussioni praticamente Unix su questo gruppo.
Lo so abbastanza Python e capisco RSS di base, ma io sono bloccato su ... come faccio a prendere tutti i messaggi tra date particolari, o almeno tutti i messaggi tra Ennesimo recente e Mth recenti?
descrizioni di alto livello, pseudo-codice è benvenuto.
Grazie!
EDIT:
Mi piacerebbe essere in grado di tornare indietro più di 100 messaggi, ma non afferrando come l'analisi di 10 messaggi in un momento come l'utilizzo di questo URL:
http://groups.google .com / gruppo / comp.unix.shell / argomenti? hl = it & start = 2000 & sa = N
Ci deve essere un modo migliore.
Soluzione
Come accennato Randal, questo viola ToS di Google - tuttavia, come un ipotetico o per l'uso su un altro sito senza queste restrizioni si potrebbe abbastanza facilmente mettere su qualcosa con urllib e BeautifulSoup . Utilizzare urllib per aprire la pagina e quindi utilizzare BeautifulSoup per afferrare tutti gli argomenti della discussione (e link, se si desidera eseguire la scansione più profonda). È quindi possibile a livello di codice trovare il link alla pagina successiva dei risultati e poi fare un altro urllib per andare alla pagina 2 -. Quindi ripetere il processo
A questo punto si dovrebbe avere tutti i dati grezzi, allora è solo una questione di manipolare i dati e l'implementazione la funzionalità di ricerca.
Altri suggerimenti
Crawling gruppi di Google violi le href="http://groups-beta.google.com/googlegroups/terms_of_service.html" rel="nofollow noreferrer"> di Google, in particolare la frase :
utilizzare qualsiasi robot, spider, sito di applicazione di ricerca / recupero, o altri dispositivi per recuperare o indicizzare parti del Servizio o raccogliere informazioni sugli utenti per scopi non autorizzati
Sei sicuro di voler annunciare che si sta facendo che così apertamente? E sei cieco alle conseguenze del vostro risultato?
Per N recente, sembra come si potrebbe passare il parametro ?num=50
o qualcosa nel URL del feed
Per esempio, 50 nuovi messaggi dal gruppo comp.unix.shell
http://groups.google .com / gruppo / comp.unix.shell / feed / atom_v1_0_msgs.xml? num = 50
e poi prendere un programma di feedparser come universale feed Parser
C'è un'opzione .update_parsed
in feedparser , è possibile utilizzare che per controllare il msg entro determinato intervallo di date
>>> e.updated_parsed # parses all date formats
(2005, 11, 9, 11, 56, 34, 2, 313, 0)
Avete mai pensato di yahoos YQL? Non è troppo male e può accedere a un sacco di API. http://developer.yahoo.com/yql/
Non so se i gruppi si suported ma u può accedere i feed rss. Potrebbe essere utile.