python下载批量图片

本次研究的是用python批量下载豆瓣里面某位女明星的照片到本地,按照分页来处理,下载路径也是分页来保存。

#code:--utf8--
#author:bingw
#create_time:2022/11/16 14:44
#name:YM_prc.py


import requests
from lxml import etree
import time
import os



class YM:
    def __init__(self,headers,page):
        self.before_url = 'https://movie.douban.com/celebrity/1052359/photos/?type=C&start='
        self.after_url = '&sortby=like&size=a&subtype=a'
        self.headers = headers
        self.page = page
        self.time = 0.6



    def spider(self):
        result_list = []
        url = self.before_url + str(30*(self.page-1)) + self.after_url
        print(url)
        con = requests.get(url=url,headers=self.headers).content.decode('utf8')
        result_list.append(con)
        return result_list



    def parser(self):
        src_list = []
        result_list = self.spider()
        for result in result_list:
            html = etree.HTML(result)
            src = html.xpath('//div[@class="cover"]/a/img/@src')
            print(src)
            src_list.append(src)
            time.sleep(self.time)
        return src_list



    def create_path(self):
        # 创建文件夹 data
        path = f"data/杨幂/{self.page}/"
        isExists = os.path.exists(path)
        if not isExists:
            first_path = os.makedirs(path)
        else:
            pass
        return path



    def downloads(self):
        src_list = self.parser()
        num = len(src_list)
        for i in range(1,num+1):
            src = src_list[i-1]
            num_ = len(src)
            for j in range(1,num_+1):
                img = src[j-1]
                con = requests.get(url=img).content
                print(self.page,j)
                with open(f'D:\\pycharm\\DouYin\\data\\img\\{self.page}-{j}'+'.jpg','wb') as w:
                    w.write(con)



if __name__ == '__main__':
    headers = {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36",
        "referer": "https://movie.douban.com/celebrity/1052359/photos/"
    }
    for page in range(1,11):
        print(f'正在抓取:第 {page} 页图片!')
        yangmi = YM(headers=headers,page=page)
        yangmi.downloads()
    print('图片下载完毕!')

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值