2016-04-21 7 views
1

Ich bin durch die schöne Suppe Seite dieses Buchs Python für Geheimagenten von Steven Lott 11, Dezember 2015, 2. AuflageKannst du mir bitte zeigen, wie man diesen "ValueError: nicht genug Werte zum Auspacken" in einer schönen Suppe beheben kann?

http://imgur.com/EgBnXmm

Ich lief den Code aus der Seite und bekam diesen Fehler gehen:

Traceback

(jüngste Aufforderung zuletzt): Datei "C: \ Python35 \ Draft 1.py", Zeile 12, in timestamp_tag, * forecast_list = strong_list Valueerror: nicht genügend Werte zu entpacken (mindestens 1 erwartet, bekam 0)

Für das Leben von mir, dass ich nicht die richtige Art und Weise herausfinden kann, um den Code zu beheben aufgeführt hier in seiner Gesamtheit: eine Million

from bs4 import BeautifulSoup 
import urllib.request 
query= "http://forecast.weather.gov/shmrn.php?mz=amz117&syn=amz101" 
with urllib.request.urlopen(query) as amz117: 
    document= BeautifulSoup(amz117.read()) 

content= document.body.find('div', id='content').div 

synopsis = content.contents[4] 
forecast = content.contents[5] 
strong_list = list(forecast.findAll('strong')) 
timestamp_tag, *forecast_list = strong_list 

for strong in forecast_list: 
    desc= strong.string.strip() 
    print(desc, strong.nextSibling.string.strip()) 

Dank.

+0

Bei einer Vermutung: die eigentlichen Daten aus der URL geändert haben zwischen dem, wenn das Buch geschrieben wurde und jetzt. Die Fehlermeldung zeigt Ihnen, was falsch ist: Es gibt kein "stark" in "Prognose". – Evert

Antwort

1

Sie erleben die differences between parsers. Und da Sie keinen explizit angegeben haben, wählt BeautifulSoup automatisch basierend auf internen Ranking und was Sie in der Python-Umgebung installiert haben - ich vermute, in Ihrem Fall, nahm es lxml oder html5lib. Wechseln Sie zu html.parser:

document = BeautifulSoup(amz117.read(), "html.parser") 
+0

Wow, es funktioniert. Ich kann Ihnen nicht genug danken. – goughgough

Verwandte Themen