90%的人学Python爬虫都干过这种事,别不承认!

可以说,我是因为想批量下载一个网站的图片,才开始学的python爬虫。当一张一张图片自动下载下来时,满满的成就感,也满满的罪恶感……哈哈哈!!!窈窕淑女,君子好逑,这篇文章就讲讲我采集的第一个网站:

在这里插入图片描述

一、实现目标

根据一个图集的入口地址,下载该图集中的所有图片。图集的入口地址如下:

https://www.yeitu.com/meinv/xinggan/20231110_33358.html

在这里插入图片描述

二、网站分析

我们的目标是下载图片,那就需要得到图片文件的地址。

在这里插入图片描述

而图片文件的地址肯定是在图片详情页的html代码中,因此,只需要得到图片详情页的地址,就可以从它的html代码中获取图片文件的地址。

在这里插入图片描述

而图片详情页的地址与图片集入口地址存在着联系,即图片集入口地址加上图片序列号可得到图片详情页的地址。

在这里插入图片描述

总结一下,图片集入口地址——图片详情页地址——图片文件地址。

三、代码编写

  1. 通过图片集入口地址获取该图片集的图片总数
def getPicCount(picSetPageUrl, headers):
    response = requests.get(url=picSetPageUrl, headers=headers)
    html = etree.HTML(response.text)
    picCount = html.xpath("//div[@class='pages uk-text-center']/a[last()-1]/text()")[0]
    return int(picCount)
  1. 通过图片集入口地址与图片序列号得到图片详情页地址的列表
def getPicPageUrlList(picSetPageUrl, picCount):
    picPageUrlList = []
    for index in range(picCount):
        picPageUrl = picSetPageUrl.replace('.html', '_'+str(index+1)+'.html')
        picPageUrlList.append(picPageUrl)
    return picPageUrlList
  1. 通过图片详情页地址的列表得到图片文件地址的列表
def getPicUrlList(picPageUrlList, headers):
    picUrlList = []
    for picPageUrl in picPageUrlList:
        response = requests.get(url=picPageUrl, headers=headers)
        html = etree.HTML(response.text)
        picUrl = html.xpath("//div[@class='article-body cate-6']//img/@src")[0]
        picUrlList.append(picUrl)
    return picUrlList
  1. 通过图片文件地址下载图片文件
def getPic(index, picUrl, headers):
    suffix = picUrl.split(".")[-1]
    response = requests.get(url=picUrl, headers=headers)
    with open('output/'+str(index+1)+'.'+suffix, 'wb') as file:
        file.write(response.content)

四、源码获取

如果需要完整源代码,可以关注微信公众号【愤怒的it男】,私聊号主获取。

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值