Warnung: Einige Zeichen konnten nicht entschlüsselt werden, und wurden ersetzt durch die ERSATZ-ZEICHEN
Ich bin erstellen Sie ein Skript zum download einige mp3-podcasts, die von einer Website aus und schreiben Sie Sie auf einen bestimmten Standort. Ich bin fast fertig, und die Dateien werden heruntergeladen und erstellt. Allerdings bin ich im laufen in ein problem, in denen die binären Daten können nicht vollständig decodiert und die mp3-Dateien nicht Abspielen.
Hier ist mein code:
import re
import os
import urllib2
from bs4 import BeautifulSoup
import time
def getHTMLstring(url):
html = urllib2.urlopen(url)
soup = BeautifulSoup(html)
soupString = soup.encode('utf-8')
return soupString
def getList(html_string):
urlList = re.findall('(http://podcast\.travelsinamathematicalworld\.co\.uk\/mp3/.*\.mp3)', html_string)
firstUrl = urlList[0]
finalList = [firstUrl]
for url in urlList:
if url != finalList[0]:
finalList.insert(0,url)
return finalList
def getBinary(netLocation):
req = urllib2.urlopen(netLocation)
reqSoup = BeautifulSoup(req)
reqString = reqSoup.encode('utf-8')
return reqString
def getFilename(string):
splitTerms = string.split('/')
fileName = splitTerms[-1]
return fileName
def writeFile(sourceBinary, fileName):
with open(fileName, 'wb') as fp:
fp.write(sourceBinary)
def main():
htmlString = getHTMLstring('http://www.travelsinamathematicalworld.co.uk')
urlList = getList(htmlString)
fileFolder = 'D:\\Dropbox\\Mathematics\\Travels in a Mathematical World\\Podcasts'
os.chdir(fileFolder)
for url in urlList:
name = getFilename(url)
binary = getBinary(url)
writeFile(binary, name)
time.sleep(2)
if __name__ == '__main__':
main()
Wenn ich den code ausführen möchte, bekomme ich folgende Warnung in meiner Konsole:
ACHTUNG:root:Einige Zeichen konnten nicht entschlüsselt werden, und wurden ersetzt durch ERSATZ-CHARAKTER.
Ich denke, dass es hat zu tun mit der Tatsache, dass die Daten, die ich verwende, ist in UTF-8 kodiert, und vielleicht die write-Methode erwartet eine andere Codierung? Ich bin neu in Python (und wirklich auf die Programmierung im Allgemeinen), und ich bin stecken.
Durch traceback, meinst du, dass die Fehlermeldungen, die pop-up in der Konsole? Wenn dem so ist, das war das problem... das Programm wurde normal läuft und der Erstellung der Dateien, so dass Sie nicht scheinen, wie es war nichts falsch. Der einzige text, der auf der Konsole ausgegeben wurde, war die Warnung, die ich in meinem ursprünglichen post.
Ja, das ist die traceback...
InformationsquelleAutor Euclid's Compass | 2013-02-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Unter der Annahme, dass Sie möchten, laden Sie einige mp3-Dateien von urls.
Sie können abgerufen werden diese urls über
BeautifulSoup
. Aber Sie brauchen nicht zu verwendenBeautifulSoup
zum analysieren von urls. Sie brauchen nur zu speichern.Zum Beispiel,
Wenn ich
BeautifulSoup
zu analysieren, dass die pdf-urlreqSoup
ist nicht die pdf-Datei, sondern eine HTML-Antwort. Eigentlich ist esInformationsquelleAutor nymk