2010-12-06 39 views
3

Je voudrais vérifier périodiquement ce que les sous-domaines sont répertoriés par Google.Résultats de la recherche Google

Pour obtenir la liste des sous-domaines, type I « site: example.com » dans la case de recherche Google - cette liste tous les résultats sous-domaine (plus de 20 pages pour notre domaine).

Quelle est la meilleure façon d'extraire uniquement l'URL des adresses renvoyées par le « site: example.com » recherche?

Je pensais à écrire un petit script python qui va faire la recherche ci-dessus et regex les URL des résultats de recherche (répéter sur toutes les pages de résultats). Est-ce un bon début? Pourrait-il y avoir une meilleure méthodologie?

Cheers.

Répondre

14

Regex est une mauvaise idée pour l'analyse syntaxique HTML. Il est énigmatique à lire et s'appuie sur du HTML bien formé.

Essayez BeautifulSoup pour Python. Voici un exemple de script qui renvoie des URL provenant des 10 premières pages d'un site: requête Google domaine.com.

import sys # Used to add the BeautifulSoup folder the import path 
import urllib2 # Used to read the html document 

if __name__ == "__main__": 
    ### Import Beautiful Soup 
    ### Here, I have the BeautifulSoup folder in the level of this Python script 
    ### So I need to tell Python where to look. 
    sys.path.append("./BeautifulSoup") 
    from BeautifulSoup import BeautifulSoup 

    ### Create opener with Google-friendly user agent 
    opener = urllib2.build_opener() 
    opener.addheaders = [('User-agent', 'Mozilla/5.0')] 

    ### Open page & generate soup 
    ### the "start" variable will be used to iterate through 10 pages. 
    for start in range(0,10): 
     url = "http://www.google.com/search?q=site:stackoverflow.com&start=" + str(start*10) 
     page = opener.open(url) 
     soup = BeautifulSoup(page) 

     ### Parse and find 
     ### Looks like google contains URLs in <cite> tags. 
     ### So for each cite tag on each page (10), print its contents (url) 
     for cite in soup.findAll('cite'): 
      print cite.text 

Sortie:

stackoverflow.com/ 
stackoverflow.com/questions 
stackoverflow.com/unanswered 
stackoverflow.com/users 
meta.stackoverflow.com/ 
blog.stackoverflow.com/ 
chat.meta.stackoverflow.com/ 
... 

Bien sûr, vous pourriez ajouter chaque résultat à une liste de sorte que vous pouvez l'analyser pour les sous-domaines. Je viens d'entrer en Python et de gratter il y a quelques jours, mais cela devrait vous aider à démarrer.

+0

merci pour cela – Roch

+0

y a-t-il quelque chose comme ça pour JavaScript? – pcx

+0

je viens de googlé "javascript racler écran", mais [pjscrape] (http://nrabinowitz.github.com/pjscrape/#quickstart) semble prometteur. – danneu

3

Le Google Custom Search API peut obtenir des résultats dans ATOM format XML

Getting Started with Google Custom Search

+0

Ou au format JSON, qui est très facile à utiliser en Python (avec le module 'json') –

+4

AFAIK Custom Search ne permet pas de rechercher tout le web, seulement les domaines sélectionnés. Le but d'une recherche peut être de regarder à travers tout le web :) –