2012-01-03 8 views
0

私はphennyの簡単なモジュール、Pythonの単純なIRCボットフレームワークを作成しようとしています。モジュールはhttp://www.isup.me/websitetheuserrequestedに移動して、Webサイトがアップまたはダウンしていることを確認します。他の組み込みモジュールもそれを使用しているので、正規表現を使用することができると仮定しました。この単純なスクリプトを作成しようとしましたが、正しくはなかったと思います。Pythonで正規表現を使用してページ内のテキストを検索するにはどうすればよいですか?

import re, urllib 
import web 

isupuri = 'http://www.isup.me/%s' 
check = re.compile(r'(?ims)<span class="body">.*?</span>') 

def isup(phenny, input): 
    global isupuri 
    global cleanup 

    bytes = web.get(isupuri) 
    quote = check.findall(bytes) 
    result = re.sub(r'<[^>]*?>', '', str(quote[0])) 
    phenny.say(result) 

isup.commands = ['isup'] 
isup.priority = 'low' 
isup.example = '.isup google.com' 

これは、必要なWebパッケージ(私が思う)をインポートし、ページ内で検索する文字列とテキストを定義します。私は本当に私がこれらの4つのラインで何をしたのかわからない、ちょうどもう1つのフェニックスモジュールからコードをリッピングした。ここで

は、いくつかのWebページからのランダムな引用をつかむ引用符モジュールの一例ですが、私はちょっと使用しようとしたそのベースとして:http://pastebin.com/vs5ypHZy

誰もが私が間違っているのか知っていますか?何か明確にする必要がある場合、私はあなたに言うことができます、私はこれを十分に説明したとは思わない。

Traceback (most recent call last): 
    File "C:\phenny\bot.py", line 189, in call 
    try: func(phenny, input) 
    File "C:\phenny\modules\isup.py", line 18, in isup 
    result = re.sub(r'<[^>]*?>', '', str(quote[0])) 
IndexError: list index out of range 
+0

正確にはあなたのためには機能しません。プログラムは実行されませんか?結果は間違っていますか? –

+0

また、なぜisup.meが必要ですか?サイトが稼動しているかどうかを確認するためにHTTP HEADリクエストをしてみませんか? –

+0

コマンドを実行したときに表示されるエラーを追加しました。私はそれが何であるか分かりませんが、HTTP HEADを使うことはできませんでした。 – Alex

答えて

1

http://docs.python.org/release/2.6.7/library/httplib.html#examplesから)これを試してください:

import httplib 
conn = httplib.HTTPConnection("www.python.org") 
conn.request("HEAD","/index.html") 
res = conn.getresponse() 
if res.status >= 200 and res.status < 300: 
    print "up" 
else: 
    print "down" 

ます。また、応答ステータスをチェックする前にリダイレクトを追跡するためのコードを追加する必要があります。ここ

は私が取得エラーです。

編集リダイレクトを処理する必要がなく、ロジックのための例外を使用しない

オルタナティブ:

import urllib2 
request = urllib2.Request('http://google.com') 
request.get_method = lambda : 'HEAD' 

try: 
    response = urllib2.urlopen(request) 
    print "up" 
    print response.code 
except urllib2.URLError, e: 
    # failure 
    print "down" 
    print e 

あなたがあなた自身のテストを行い、最適なものを選択する必要があります。

+0

これはちょっとした作品ですが、私は "www.python.org"を編集しましたが、今はすべてがダウンしていると言われていますが、/index.htmlのためにサイトにはこれがないかもしれないと思います。リダイレクト先の最終ページを確認するにはどうすればよいですか? – Alex

+0

@Alex:ブラウザで使用するURLとまったく同じURLを使用します(ロケーションバーからコピーするだけです)。 –

+0

私はhttpを含めるたびにこのエラーが表示されます:InvalidURL:nonnumeric port: '// stackoverflow.com/questions/8714093/how-do-i-search-for-text-in-a-page-using- regular-expressions- in-python '(source unknown) – Alex

0

エラーは、あなたのregexpがページのどこにも見つかりませんでした(リストquoteには要素がありません0)。

+0

私は 'r '(?ims)。*を考えました。 ''は有効な正規表現になり、そのHTMLタグ内に結果があると見なします... – Alex

+0

*有効です*(またはコンパイル中にエラーが発生しています)。ページ上のどこにも*一致しません。これは、ページが空の文字列(何もダウンロードされていないか、エラーページが表示されている)か、または正規表現があなたが考えるべきことをしていないことを意味します。 –

関連する問題