Python: 正在批量下载 xml 个文件 returns 一个损坏的 zip 文件

Python: downloading xml files in batch returns a damaged zip file

吸取灵感from this post,我正在尝试从一个网站批量下载一堆xml个文件:

import urllib2

url='http://ratings.food.gov.uk/open-data/'

f = urllib2.urlopen(url)
data = f.read()
with open("C:\Users\MyName\Desktop\data.zip", "wb") as code:
    code.write(data)

zip 文件在几秒钟内创建,但当我尝试访问它时,出现错误 window:

Windows cannot open the folder.
The Compressed (zipped) Folder "C:\Users\MyName\Desktop\data.zip" is invalid.

我做错了什么?

您没有将其编码为 zip 文件。相反,如果您选择在记事本等纯文本编辑器中打开它,它应该会显示原始 xml.

您没有打开 zip 文件中的文件句柄:

import urllib2
from bs4 import BeautifulSoup
import zipfile

url='http://ratings.food.gov.uk/open-data/'

fileurls = []

f = urllib2.urlopen(url)
mainpage = f.read()

soup = BeautifulSoup(mainpage, 'html.parser')

tablewrapper = soup.find(id='openDataStatic')

for table in tablewrapper.find_all('table'):
    for link in table.find_all('a'):
        fileurls.append(link['href'])

with zipfile.ZipFile("data.zip", "w") as code:
    for url in fileurls:
        print('Downloading: %s' % url)
        f = urllib2.urlopen(url)
        data = f.read()
        xmlfilename = url.rsplit('/', 1)[-1]
        code.writestr(xmlfilename, data)