需要使这个irc机器人与BeautifulSoup一起工作

时间:2012-08-17 14:05:10

标签: python

从.downloads获得响应的Instad我想要一个url来触发它并从BeautifulSoup获得回复,我是python的新手,这只是我的第3个项目。

#!/usr/bin/env python

import botlib
import urllib
import BeautifulSoup

class StaffBot(botlib.Bot):
    def __init__(self, server, channel, nick, password=None):
        botlib.Bot.__init__(self, server, 6667, channel, nick)

        if password != None:
            self.protocol.privmsg("nickserv", "identify" % password)
    def __actions__(self):
        botlib.Bot.__actions__(self)

        if botlib.check_found(self.data, ".downloads"):
            username = self.get_username()

            self.protocol.privmsg(self.channel, "%s: response" % username)          

if __name__ == "__main__":
    StaffBot("irc.rizon.net", "#chan", "nick").run()        

只是在案件中我做错了...... http://pastebin.com/AhrssPVW

使用的BeautifulSoup脚本。

    soup = BeautifulSoup.BeautifulSoup(urllib.urlopen("url"))
print soup.title.string

修改

我有点失败,我试图说,我想用网站.net/viewtopic.php替换.downloads。所以有人说网站(如下),机器人回复了网页标题。

somone>>>website.net/viewtopic.php?f=6&t=10960                                                                                           
bot>>>WebsiteName • Viewtopic - topicname

1 个答案:

答案 0 :(得分:0)

也许您为用户创建了一个命令

if botlib.check_found(self.data, "!download"):
  # must be !download <url>
  url = self.data.split()[1] # < i don't know if the library adds anything else to self.data
  soup = BeautifulSoup.BeautifulSoup(urllib.urlopen(url))
  print soup.title.string

这要求您的用户在!download命令后包含一个网址。

所以房间里的用户可以输入!download website.net/viewtopic.php你的机器人会检查它是否是下载命令check_found(self.data, "!download")。然后需要获取下载URL。 split()将字符串拆分为空格中的列表。并且要获取的网址将是列表[1]中的第二项。然后,你可以使用漂亮的汤来获取/解析该网址。