程序所做的事:
- 加载主页;
- 保存该页的图片;
- 转入前一张图片的链接;
- 重复直到第一张图片。
方案实现:
- 利用 requests 模块下载页面。
- 利用 Beautiful Soup 找到页面中手绘图像的 URL。
- 利用 iter_content()下载手绘图像,并保存到硬盘。
- 找到前一张手绘的链接 URL,然后重复。
#! python3
import requests, os, bs4
url = 'http://www.sketch-a-day.com/page/1'
os.makedirs('SketchADay', exist_ok=True)
while not url.endswith('#'):
for i in range(1, 969):
url = 'http://www.sketch-a-day.com/page/' + str(i)
print('Downloading page %s...' % url)
res = requests.get(url)
try:
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text, "html.parser")
imgElem = soup.select('.content img')
if imgElem == []:
print('Could not find sketch image.')
else:
imgUrl = imgElem[0].get('src')
print('Downloading image %s...' % (imgUrl))
res = requests.get(imgUrl)
res.raise_for_status()
print(os.path.join('SketchADay', '%04d_' % i + os.path.basename(imgUrl)))
imageFile = open(os.path.join('SketchADay', '%04d_' % i + os.path.basename(imgUrl)), 'wb')
for chunk in res.iter_content(100000):
imageFile.write(chunk)
imageFile.close()
# prevLink = soup.select('a[class="next"]')[0]
# url = prevLink.get('href')
except Exception as e:
continue
print('Done.')
环境:python3