Python 爬取网上图片到本地 源码

直接将代码放入PyCharm编译器内

# 导入requests 库
import requests
from lxml import etree
# 通过改变 页数 获取 不同页数 的源代码
for page in range(1, 10):
    # 构造 url
    url = 'https://sc.chinaz.com/tupian/renwusuxie_' + str(page) + '.html'
    # 构造请求头
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:108.0) Gecko/20100101 Firefox/108.0'
    }
    # request get型获取页面
    re = requests.get(url, headers=headers)
    # 转换为 utf-8 格式,防止获取名字时乱码问题
    re.encoding = 'utf-8'
    # 获取lxml对象
    soup = etree.HTML(re.text)

    # 获取页面码源代码的 图片url地址
    photo_url = soup.xpath('//div[@class="item"]/img/@data-original')
    # 构造数组 ?
    photo_urll = []
    # 把 获取的全部 url 弄到 photo_urll 内,并且在前面加上 https: 方便 request
    for i in range(1, len(photo_url)):
        photo_urll.append('https:' + photo_url[i])

    # 获取页面码源代码的 每张图片的名字
    name = soup.xpath('//div[@class="item"]/img/@alt')
    # //标签[@后面内容]/子标签/@需要获取的指定标签
    # 构造数组 ?
    # #div class="item">
    #       <img src="../static/common/com_images/img-loding.png"
    #         style="height: 279px"
    #         data-original="//scpic.chinaz.net/files/default/imgs/2022-12-13/14b80df1dab40b0e_s.jpg" # 需要获取这个,这个是url
    #         class="lazy"
    #         alt="欧美时尚戴帽女生写真图片" # 这个获取的是图片名字
    #       />
    namee = []
    # 把每张图片名字 弄到 namee 内
    for i in range(1, len(name)):
        namee.append(name[i])

    # 用 for循环获取 每个图片 的url
    for x in range(1, len(name)):
        # try 防止报错,预防出现爬取不到情况
        try:
            # request请求获取 每个图片url 的数据流
            re = requests.get(photo_urll[x], headers=headers).content
            # 用 wb 方式,写入到 文件夹内,并给其命名
            with open('E:/MyProcjects/信息收集1/photos/' + namee[x] + '.png', mode='wb') as f:
                f.write(re)
                # 打印出 图片名字 下载成功 ! 的提醒
                print(namee[x] + " 下载成功 !")
                f.close()
        except Exception as e:
            # 报错就打印出  !
            print(' ! ')
            pass

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值