美文网首页我爱编程
Python爬取Sketch-A-Day网站内容

Python爬取Sketch-A-Day网站内容

作者: KURAUDO4869 | 来源:发表于2018-06-28 00:06 被阅读0次

程序所做的事:

  • 加载主页;
  • 保存该页的图片;
  • 转入前一张图片的链接;
  • 重复直到第一张图片。

方案实现:

  • 利用 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

相关文章

网友评论

    本文标题:Python爬取Sketch-A-Day网站内容

    本文链接:https://www.haomeiwen.com/subject/qyjwyftx.html