2012-07-28 49 views
-1

我的機器人使用美麗的湯來解析HTML,並打印出IRC中所說的鏈接的網頁標題。除了一件事情之外,這一切都有效:如果有人提供了死/假鏈接,機器人就會崩潰。不良鏈接崩潰Python IRC bot

當發現「http」時,鏈接抓取器會觸發,所以例如如果有人剛剛說「http」,它會因爲沒有響應而崩潰。有誰知道如何解決這一問題?

下面是爭奪的鏈接,並得到的網頁標題和職位的代碼部分是:

msg_split = msg.split(' ') 
for item in msg_split: 
    if re.search('^http.*', item, re.I): 
     link = item 
     if item.find(','): 
      link = link.replace(',', ' ') 
      soup = BeautifulSoup.BeautifulSoup(urllib.urlopen(link)) 
      link_title = soup.title.string 
      ircSend('PRIVMSG ' + args[2] + ' ' + link_title) 
+0

您能否提供導致機器人崩潰的行的片段? – Fraxtil 2012-07-28 02:20:47

+0

添加整個HTML解析器 – 2012-07-28 02:24:55

+0

縮進似乎是不正確的(不反映正確的邏輯可能使用)。請糾正它們。還要看看str.find()返回的內容:如果找不到任何內容,則返回-1。 – Tadeck 2012-07-28 02:52:08

回答

0

裹/的soup = ...通過ircSend(...線一試,除了聲明。

try: 
    soup = BeautifulSoup.BeautifulSoup(urllib.urlopen(link)) 
    link_title = soup.title.string 
    ircSend('PRIVMSG ' + args[2] + ' ' + link_title) 
except IOError: 
    pass 
+0

沒有修復它 – 2012-07-28 02:34:58

+0

你是否使用urllib或其他URL庫,像'import urllib2 as urllib'? IOError是urllib應該返回的唯一錯誤,但是您可以嘗試將「except」行更改爲「except:」。 – Fraxtil 2012-07-28 02:42:00

+0

我只是進口的urllib – 2012-07-28 02:48:21