我的代码非常需要帮助。我试图从一本书做练习,我完全遵循它。代码工作,它下载了图像。但是,下载的所有图像都已损坏。我不知道是什么导致它或我错过了什么。
感谢。
#! python3
# downloadXkcd.py - Downloads every single XKCD comic.
import requests, os, bs4
url = 'http://xkcd.com'
os.makedirs('xkcd', exist_ok=True)
while not url.endswith('#'):
# Download the page.
print('Downloading page %s...' % url)
res = requests.get(url)
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text,'html.parser')
# Find the URL of the comic image.
comicElem = soup.select('#comic img')
if comicElem == []:
print('Could not find comic image')
else:
comicUrl = comicElem[0].get('src')
# Download the image.
print('Downloading image %s' %(comicUrl))
res.raise_for_status()
# Save the image to ./xkcd.
imagefile = open(os.path.join('xkcd', os.path.basename(comicUrl)), 'wb')
for chunk in res.iter_content(100000):
imagefile.write(chunk)
imagefile.close()
# Get the prev button's url
prevlink = soup.select('a[rel="prev"]')[0]
url = 'http://xkcd.com' + prevlink.get('href')
print('Done')
答案 0 :(得分:0)
您正在向文件中写入错误的数据:
res .iter_content(100000)
中的块
res 是网页的数据。您应该使用网址 comicUrl 获取图片的数据。我想你忘了这句话:
print('Downloading image %s' %(comicUrl))
res = requests.get('http:' + comicUrl)
注意:我在网址前添加了 http:,因为您提取的图片网址缺少此功能。您应该定义一个函数来检查是否有必要添加此模式。