2010-12-06 21 views
3

Googleがどのサブドメインをリストしているか定期的に確認したいと思います。Google検索結果を抽出する

サブドメインのリストを取得するには、Google検索ボックスに「site:example.com」と入力します。これはすべてのサブドメインの結果(私たちのドメインで20ページ以上)を表示します。

'site:example.com'検索で返された住所のURLのみを抽出するには、どのような方法が最適ですか?

私は、上記の検索を行い、検索結果からURLを正規表現する(少しの結果ページでも繰り返す)小さなpythonスクリプトを書くことを考えていました。これは良いスタートですか?より良い方法論がありますか?

乾杯。

答えて

14

ATOM XML形式で結果を提供することができます。整形式のHTMLを読んで頼りにするのは謎です。

BeautifulSoupをPython用に試してください。以下は、サイトの最初の10ページ(domain.com Googleクエリ)からのURLを返すスクリプトの例です。

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 

出力:あなたがサブドメインのためにそれを解析することができるように

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

はもちろん、あなたがリストにそれぞれの結果を追加することができます。私はちょうどPythonに入って数日前に掻き集めましたが、これであなたを始められます。

+0

ありがとうございました – Roch

+0

これはJavaScriptのようなものですか? – pcx

+0

私はちょうど "javascriptのスクリーンスクレイピング"をgoogled、しかし[pjscrape](http://nrabinowitz.github.com/pjscrape/#quickstart)は有望そうです。 – danneu

3

Google Custom Search APIは正規表現がHTMLを解析するための悪い考えです

Getting Started with Google Custom Search

+0

Pythonで非常に使いやすいJSON形式( 'json'モジュール付き) –

+4

AFAIKカスタム検索では、選択したドメインだけでWeb全体を検索することはできません。検索のポイントは、すべてのウェブを見ている可能性があります:) –

関連する問題