2012-08-17 105 views
0

Instad從.downloads獲取響應我想要一個url來觸發它,並從BeautifulSoup獲得響應,我很新的python,這只是像我的第三個項目。需要使這個irc bot與BeautifulSoup一起工作

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

編輯

我有點失敗了我想說的,我想,以取代.downloads說website.net/viewtopic.php。所以有人說這個網站(如下圖)回覆了頁面標題。

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

那麼你什麼時候試圖找到一個url?目前您不會從'urllib.urlopen('url')'獲取內容,因爲您正在向它傳遞一個字符串。 – dm03514 2012-08-17 14:11:38

+0

該網址將來自我的irc頻道上的用戶,我想添加beautifulsoup到機器人中,以便用戶從我們的網站輸入網址。例。 http://website.net/viewtopic.php將成爲觸發器而不是.downloads。 – user1425964 2012-08-17 14:17:25

回答

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")。然後它需要獲取下載網址。 split()將字符串拆分爲空白列表。並且要獲取的網址將是列表[1]中的第二個項目。然後,您可以使用美麗的湯取出/解析該網址。

+0

多數民衆贊成那不是我的智慧,編輯它多一點,我希望你可以理解它一點點更好.... – user1425964 2012-08-17 18:08:39

相關問題