爬取图片首页小图

需求
爬取图片网站首页上的图片
在这里插入图片描述

实现

  • 通过抓包工具确定图片不是动态加载,使用etree.xpath定位图片标签位置,通过src=""尝试捕获图片数据,但只捕获到单张图片
  • 查看图片标签信息,在页面刷新时前几张图片地址为src="",没有经过鼠标滚轮,直接查看尾端图片标签,图片地址为src2="",明确实际请求中存在图片懒加载。
  • 图片懒加载:只有当图片被显示在浏览器可视化范围之内才会将img的伪属性变成真正的属性。如果是requests发起的请求,requests请求是没有可视化范围,因此我们一定要解析的是img伪属性的属性值
  • 将tree.xpath(’./div/a/img/@src’)修改为tree.xpath(’./div/a/img/@src2’),解析img伪属性的属性值,完成需求。
  • (此处直接下载首页图,为小图形式)
import requests
from lxml import etree
import os

dirName = 'GuDianLib'
if not os.path.exists(dirName):
    os.mkdir(dirName)
    
main_url = 'https://sc.chinaz.com/tupian/gudianmeinvtupian.html'
response = requests.get(url=main_url,headers=headers)
response.encoding='utf-8'
page_text = response.text

tree = etree.HTML(page_text)
div_list = tree.xpath('//div[@id="container"]/div')
for div in div_list:
    title = div.xpath('./div/a/img/@alt')[0]+'.jpg'
    src_one = 'https:' + div.xpath('./div/a/img/@src2')[0]
    img_data = requests.get(url=src_one,headers=headers).content
    imgPath = dirName+'/'+title
    with open(imgPath,'wb')as fp:
        fp.write(img_data)
        print(title,'下载成功')


在这里插入图片描述

注意:标签嵌套多个div,选错div会导致地址出错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值