使用 python 下载的文件出现问题

Problem with files downloaded by using python

我想从网站上下载一些 jpg 文件并将它们保存在我的硬盘上,但是当我这样做时,由于格式问题我无法打开文件,所有这些文件都有 115kb 的一些原因。

我试过更改块大小并尝试使用 request(),但没有用。 shell 中没有错误。网站的link是正确的

url = 'http://<site>'
os.makedirs('photos', exist_ok = True)
res = requests.get(url)
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text, features="html.parser")
elem = soup.select('a img')
if elem == []:
    print('no images')
else:
    for i in range(len(elem)):
        link = elem[i].get('src')
        if link != None:
            plik = open(os.path.join('photos', os.path.basename(link)), 'wb')
            for chunk in res.iter_content(100000):
                plik.write(chunk)
            plik.close()
            print('downloaded %s' % os.path.basename(link))

解决方案(在'for i...'循环中):

url = 'http://<site>'
os.makedirs('photos', exist_ok = True)
res = requests.get(url)
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text, features="html.parser")
elem = soup.select('a img')
if elem == []:
    print('no images')
else:
    for i in range(len(elem)):
        link = url + elem[i].get('src')
        res2 = requests.get(link)
        res2.raise_for_status()
        if link != None:
            plik = open(os.path.join('photos', os.path.basename(link)), 'wb')
            for chunk in res.iter_content(100000):
                plik.write(chunk)
            plik.close()
            print('downloaded %s' % os.path.basename(link))

阅读 html 页面响应并提取图像的 src 后,您将不得不使用它来发出另一个 http(s) 请求以流式传输来自 url 的图像。

目前您似乎正在尝试继续阅读最初的回复。

注意:对于所有链接和锚点,浏览器会进行进一步的 http 请求