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

程序所做的事:

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

方案实现:

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 声明:本文讲解的实战内容,均仅用于学习交流,请勿用于任何商业用途! 一、前言 强烈建议:请在电脑的陪同下,阅读本文...
    Bruce_Szh阅读 12,788评论 6 28
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AGI阅读 16,018评论 3 119
  • em…我觉得,我玩全民枪战这么长时间,最难以忍受的是那一次,我最信任的闺蜜背叛了我,她为了自己的一己私仇,用我的号...
    嗜血狼魂阅读 253评论 0 0
  • 临近开学,本是做计划的时候,然而我还是玩了一天的英雄联盟,无聊在我回家的这一个月时间里时时来袭。 我很同意郑也夫描...
    韩和侨阅读 363评论 1 0
  • 听说今年的立春是百年一遇,农历会有两个立春,全年总共会有384天,明年过年会延长到2018年2月16日,真是超长待...
    希亚阅读 233评论 0 2