URL에서 일부 파일을 다운로드하기 위해 코드를 작성했습니다. 그러나 스크립트를 실행하면 끝까지 갈 때를 제외하고는 모든 것이 잘 실행됩니다 파일을 다운로드하면 이름 중 하나를 사용하여 하나의 파일을 생성 한 다음 파일이 커지고 크기가 커지는 것을 확인한 다음 다시 작아집니다. 이 파일 (mp4)은 항상 재생할 수 없거나 손상되어 있으며, 오직 하나만 있습니다. 다른 파일로 이동하지 않습니다. 무슨 일있어? 내 생각 엔 어떻게 든 파이썬은 하나의 로컬 파일에 다른 파일을 계속 다운로드하고 덮어 쓰며, 나는 왜 그런지 이해하지 못한다. 당신이 대신 원하는 것은재미있는 동작은 파이썬에서 dict에 urlretrieve를 사용합니다.
import sys
import os
import re
import urllib
import urllib.request
urlfilebytes = urllib.request.urlopen('http://www.pbs.org/wgbh/nova/sciencenow/download/index.html')
urlfile = urlfilebytes.read().decode('utf-8')
urls = re.findall(r'(http://www-tc.pbs.org/wgbh/nova/sciencenow/media/downloads/\S+)"', urlfile)
print(urls)
names = re.findall(r'NSN_\S+.mp4', str(urls))
print(names)
names_to_urls = {}
for name in names:
for url in urls:
names_to_urls[name] = url
print(names_to_urls)
for key in names_to_urls.keys():
for value in names_to_urls.values():
urllib.request.urlretrieve(value, key)
첫 번째 루프는 모든 dict 항목을 마지막 url로 설정합니다. – Jacob