2012-07-28 91 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