2014-06-21 5 views
0

Je reçois un flux en analysant cette URL avec feedparser qui est fourni au bas de l'article.Liens d'extrait Python

Dans l'URL fournie ci-dessus, il y a une liste de fichiers zip sur les liens de la page. Le tutor (slide 8) veut utiliser ce code ci-dessous pour extraire tous les liens (du flux RSS je suppose) en utilisant le code ci-dessous:

#Downloading the data - parsing the RSS feed to extract the ZIP file enclosure filename 
# Process RSS feed and walk through all items contained 
#if you are confused about smthng print(type(obj), repr(obj)) 
#feed= 'http://www.sec.gov/Archives/edgar/monthly/xbrlrss-2012-02.xml' 
for item in feed.entries: 
    print(item[ "summary" ], item[ "title" ], item[ "published" ]) 
    try: 
     # Identify ZIP file enclosure, if available 
     enclosures = [ l for l in item[ "links" ] if l[ "rel" ] == "enclosure" ] 
     if (len(enclosures) > 0): 
      # ZIP file enclosure exists, so we can just download the ZIP file 
      enclosure = enclosures[0] 
      sourceurl = enclosure[ "href" ] 
      cik = item[ "edgar_ciknumber" ] 
      targetfname = target_dir+cik +' - ' +sourceurl.split('/')[-1] 
      retry_counter = 3 
      while retry_counter > 0: 
       good_read = downloadfile(sourceurl, targetfname) 
       if good_read: 
        break 
       else: 
        print("Retrying:", retry_counter) 
        retry_counter -= 1 
    except: 
     pass 

Le problème est que peu importe à quel point je recherche je ne peux pas trouver les liens pour chaque zip dans le flux! Surtout en utilisant le code ci-dessus.

Je suis certain que je manque quelque chose dans l'image ...

Voici le flux que je reçois de feedparser:

{'updated': 'Tue, 25 Jun 2013 22:48:50 EDT', 'published': 'Tue, 25 Jun 2013 22:48:50 EDT', 'subtitle_detail': {'value': 'This is a list all of the filings containing XBRL for 2012-07', 'base': 'http://www.sec.gov/Archives/edgar/monthly/xbrlrss-2012-07.xml', 'language': None, 'type': 'text/html'}, 'published_parsed': time.struct_time(tm_year=2013, tm_mon=6, tm_mday=26, tm_hour=2, tm_min=48, tm_sec=50, tm_wday=2, tm_yday=177, tm_isdst=0), 'updated_parsed': time.struct_time(tm_year=2013, tm_mon=6, tm_mday=26, tm_hour=2, tm_min=48, tm_sec=50, tm_wday=2, tm_yday=177, tm_isdst=0), 'links': [{'href': 'http://www.sec.gov/spotlight/xbrl/filings-and-feeds.shtml', 'rel': 'alternate', 'type': 'text/html'}, {'href': 'http://www.sec.gov/Archives/edgar/monthly/xbrlrss-2012-07.xml', 'rel': 'self', 'type': 'application/rss+xml'}], 'title_detail': {'value': 'All XBRL Data Submitted to the SEC for 2012-07', 'base': 'http://www.sec.gov/Archives/edgar/monthly/xbrlrss-2012-07.xml', 'language': None, 'type': 'text/plain'}, 'subtitle': 'This is a list all of the filings containing XBRL for 2012-07', 'title': 'All XBRL Data Submitted to the SEC for 2012-07', 'language': 'en-us', 'link': 'http://www.sec.gov/spotlight/xbrl/filings-and-feeds.shtml'} 
+0

Peut-être que les liens sont générés par JS ou quelque chose de ce genre? – aIKid

+0

JS? que voulez-vous dire exactement – ExoticBirdsMerchant

+0

Je ne suis pas très familier avec rss, mais ne devriez-vous pas être en mesure d'obtenir l'information que vous voulez juste par le HTML? – aIKid

Répondre

0

Quant à moi, vous obtenez des données incomplètes dans feed
ou vous n'avez pas ajouté le reste du code comme downloadfile() de la diapositive suivante.

Ce code cacher tous les messages d'erreur

except: 
    pass 

changer si dans

except Exception as e: 
    print(e) 

pour obtenir des informations d'erreur

ou supprimer try et except pass pour obtenir des messages d'erreur complète (retraçage)
et essayez à nouveau votre code.