2012-08-17 6 views
0

Instad d'obtenir un respones de .downloads je veux une url pour le déclencher et obtenir une réponse de BeautifulSoup, Im assez nouveau à python et c'est seulement comme mon 3ème projet.Besoin de faire fonctionner ce bot irc avec 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()   

juste en cas je l'ai fait mal .... http://pastebin.com/AhrssPVW

le script BeautifulSoup im en utilisant.

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

Modifier

J'ai un peu échoué sur ce que je voulais dire, je veux remplacer .downloads par dire website.net/viewtopic.php. Alors, quand quelqu'un a dit que le site Web (comme ci-dessous), le robot a répondu avec le titre de la page.

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

Alors, quand essayez-vous de trouver une URL? actuellement vous n'obtiendrez pas de contenu de 'urllib.urlopen ('url')' parce que vous lui passez une chaîne. – dm03514

+0

L'URL viendra des utilisateurs sur ma chaîne irc, je veux ajouter beautifulsoup dans le bot, donc quand un utilisateur tape une URL depuis notre site. Exemple. http://website.net/viewtopic.php sera le déclencheur au lieu de .downloads. – user1425964

Répondre

0

Peut-être que vous créez une commande pour vos utilisateurs

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 

vos utilisateurs, ce qui exige inclure une URL après la commande !download.

afin qu'un utilisateur dans la pièce puisse taper !download website.net/viewtopic.php Votre bot va vérifier s'il s'agit d'une commande de téléchargement check_found(self.data, "!download"). Il doit ensuite obtenir l'URL de téléchargement. split() divise une chaîne en une liste dans l'espace blanc. Et l'URL à récupérer sera le deuxième élément de la liste [1]. Vous pouvez alors aller chercher/analyser cette URL en utilisant une belle soupe.

+0

ce n'est pas ce que je mets, édité un peu plus et j'espère que vous pouvez le comprendre un peu mieux .... – user1425964

Questions connexes