2011-03-11 3 views
0

[Utiliser Python 3.1] Quelqu'un a-t-il une idée sur la façon de créer une application Python 3 permettant à l'utilisateur d'écrire un fichier texte avec plusieurs mots séparés par des virgules. Le programme devrait lire le fichier et télécharger la page Wikipedia de l'article demandé. par exemple. si ils tapaient bonjour, python-3, le poulet irait à Wikipedia et téléchargerait http://www.wikipedia.com/wiki/hello, http://www.wikip ... N'importe qui pense qu'ils peuvent le faire?Python-Wikipedia Automated Downloader

Quand je dis «télécharger», je veux dire télécharger le texte, peu importe les images.

+3

Cela ressemble à des devoirs pour moi. Si vous espérez obtenir de l'aide, faites des efforts et montrez-nous du code. – ierax

+3

J'ai une idée de la façon de le faire, oui. Montre-moi le tien et je te montrerai le mien. –

+0

^^^^ bofh! ^^^^ – tiagoboldt

Répondre

1

Vous avez décrit exactement comment créer un tel programme. Donc quelle est la question?

Vous avez lu le fichier, divisé en virgules et téléchargé l'URL. Terminé!

+0

Je sais comment faire les choses supplémentaires, en lisant des fichiers texte ... mais je ne sais pas comment faire le téléchargement de la page? – Alex

+0

@Alex: Vous utilisez urllib. –

0

Vérifiez le code suivant, il télécharge le code HTML, sans les images, mais vous pouvez y accéder à partir du fichier XML en cours d'analyse pour obtenir l'URL.

from time import sleep 
import urllib 
import urllib2 
from xml.dom import minidom, Node 

def main(): 
    print "Hello World" 

    keywords = [] 

    key_file = open("example.txt", 'r') 
    if key_file: 
     temp_lines = key_file.readlines() 

     for keyword_line in temp_lines: 
      keywords.append(keyword_line.rstrip("\n")) 

     key_file.close() 

    print "Total keywords: %d" % len(keywords) 
    for keyword in keywords: 
     url = "http://en.wikipedia.org/w/api.php?format=xml&action=opensearch&search=" + keyword 
     xmldoc = minidom.parse(urllib.urlopen(url)) 
     root_node = xmldoc.childNodes[0] 

     section_node = None 
     for node in root_node.childNodes: 
      if node.nodeType == Node.ELEMENT_NODE and \ 
      node.nodeName == "Section": 
       section_node = node 
       break 

     if section_node is not None: 
      items = [] 
      for node in section_node.childNodes: 
       if node.nodeType == Node.ELEMENT_NODE and \ 
       node.nodeName == "Item": 
        items.append(node) 

      if len(items) == 0: 
       print "NO results found" 
      else: 
       print "\nResults found for " + keyword + ":\n" 
       for item in items: 
        for node in item.childNodes: 
         if node.nodeType == Node.ELEMENT_NODE and \ 
         node.nodeName == "Text": 
          if len(node.childNodes) == 1: 
           print node.childNodes[0].data.encode('utf-8') 

       file_name = None 
       for node in items[0].childNodes: 
        if node.nodeType == Node.ELEMENT_NODE and \ 
        node.nodeName == "Text": 
         if len(node.childNodes) == 1: 
          file_name = "Html\%s.html" % node.childNodes[0].data.encode('utf-8') 
          break 

       if file_name is not None: 
        file = open(file_name, 'w') 
        if file: 
         for node in items[0].childNodes: 
          if node.nodeType == Node.ELEMENT_NODE and \ 
          node.nodeName == "Url": 
           if len(node.childNodes) == 1: 
            user_agent = 'Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)' 
            header = { 'User-Agent' : user_agent } 
            request = urllib2.Request(url=node.childNodes[0].data, headers=header) 
            file.write(urllib2.urlopen(request).read()) 
            file.close() 
            break 


    print "Sleeping" 
    sleep(2) 

if __name__ == "__main__": 
    main() 
+1

Vous ne devriez pas répondre à une question de devoirs avec du code, surtout quand le demandeur montre peu de code et beaucoup d'idées – hayalci

Questions connexes