使用 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 请求
我想从网站上下载一些 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 请求