簡體   English   中英

如何使用Python中的正則表達式在頁面中搜索文本?

[英]How do I search for text in a page using regular expressions in Python?

我正在嘗試為phenny創建一個簡單的模塊,這是Python中的一個簡單IRC bot框架。 該模塊應該轉到http://www.isup.me/website ,要求用戶檢查網站是否打開或關閉。 我以為我可以在模塊中使用正則表達式,就像其他內置模塊也使用它一樣,因此盡管我認為我做得不對,但我嘗試創建此簡單腳本。

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包(我認為),並定義要在頁面中查找的字符串和文本。 我真的不知道我在那四行中做了什么,我只是將代碼剝離了另一個“ phenny”模塊。

這是一個報價模塊的示例,該模塊從某些網頁中獲取隨機報價,我有點試圖以此為基礎: 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

嘗試一下(從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

您應該自己進行測試,然后選擇最佳的測試。

該錯誤意味着您在頁面的任何地方都找不到您的正則表達式(列表quote中沒有元素0 )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM