python实现一次简单的批量爬取照片

前言

  • 今天就很有意思。看到一个摄影图片社区。里面的照片都是高清的,拿来当壁纸再合适不过了。
  • 所以想到尝试一下爬虫,第一为了试验一下自己学的python,第二就是下载那些照片。

过程

  • 首先爬虫是基于url链接访问爬取内容的。所以,用到python的库requests,然后因为需要提取指定内容,所以用到了库re ,再就是写入文件,用到了库os 。其中,requests是第三库,需要额外安装。安装过程很简单,可以自行百度。

  • 然后就是确定爬取目标,打开网站,查看源码或者检查元素,找到想下载的图片链接。

  • 但我在网站主页没找到,都是一堆js。转而去找其它页面,终于在摄影师主页看到了想要的东西。
    在这里插入图片描述

  • 有照片的访问链接,同时发现,还有相册的链接,点进去相册链接,里面照片的链接都在。
    在这里插入图片描述

  • 所以,思路就是从摄影师主页获取相册链接,再访问相册链接获取照片链接批量下载。然后保存到本地。
    在这里插入图片描述

  • 垃圾编程

import requests
import os
import re

url0 = "https://www.simple.com/"
header0 = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.100 Safari/537.36'}


def a_get_0(sb_0):  # 获取相册链接
    r0 = requests.get(url=sb_0, headers=header0)
    if r0.status_code == 200:
        res_url = r'<a href="(.*?)"'#正则提取链接,主要是对标签
        link0 = re.findall(res_url, r0.text, re.I | re.S | re.M)
        return(link0)


def a_get_1(sb_1):  # 获取照片链接
    r1 = requests.get(url=sb_1, headers=header0)
    if r1.status_code == 200:
        res_url = r'<img data-src="//(.*?)"'
        link1 = re.findall(res_url, r1.text, re.I | re.S | re.M)
        return(link1)


def a_onput(url1):  # 保存照片
    root_path = r'D:\photo\\'
    img_name = url1.split('/')[-1]  # 截取url最后一段内容,也就是文件名
    img_path = root_path + r'\{0}'.format(img_name)  # 文件名命名
    r = requests.get(url1)
    with open(img_path, 'wb') as f:
        f.write(r.content)
        f.close()


i = 0
while(1):
    link2 = a_get_0(url0)
    for url1 in link2:
        link3 = a_get_1(url1)
        for url2 in link3:
            url3 = "https://"+url2
            a_onput(url3)
            i = i+1
            print("第"+str(i)+"张照片保存成功")
    break

最后

  • python确实,实用性很强,我也刚刚开始学,也很多东西很难理解。
  • 这次主要目的还是实际动手,这也很简单,没有用上多线程多进程,同时,网站也没有反爬虫机制。算是最简单的吧。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值