0

除了从 .downloads 获得响应,我想要一个 url 来触发它并从 BeautifulSoup 获得响应,我对 python 很陌生,这就像我的第三个项目。

#!/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

编辑

我想说的有点失败,我想用 website.net/viewtopic.php 替换 .downloads。因此,有人说该网站(如下所示)机器人回复了页面标题。

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

1 回答 1

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命令后包含一个 url。

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

于 2012-08-17T14:35:36.287 回答