【爬虫实战】汽车之家——1.0

前言

平时喜欢到汽车之家看车,也喜欢收藏汽车模型。这次使用爬虫把汽车之家某网页的图片保存到电脑。本文章仅供学习!

程序运行结果

运行结果展示

预览

  1. 目标网址:https://car.autohome.com.cn/pic/series/4171-1.html
  2. 网址预览
    目标网址预览

网址分析

随机选择一张图片右键点击检查(审查元素)
在这里插入图片描述
选择img标签的属性src,访问图片。
在这里插入图片描述
所看到的图片比例为480×360,清晰度不是很高,所有我们点击图片查看高清图片

在这里插入图片描述
在这里插入图片描述
同样右键图片,找到图片的地址,访问图片
在这里插入图片描述
显然,图片的清晰度明显比480×360的高很多。我们对比一下这两张图片的网址

https://car3.autoimg.cn/cardfs/product/g24/M07/B2/E0/480x360_0_q95_c42_autohomecar__Chtk3WDIiCGAPFsDABX1wkXD-AQ908.jpg

https://car3.autoimg.cn/cardfs/product/g24/M07/B2/E0/1024x0_1_q95_autohomecar__Chtk3WDIiCGAPFsDABX1wkXD-AQ908.jpg

显然两者之间的差异在于_autohomecar__Chtk3WDIiCGAPFsDABX1wkXD-AQ908.jpg前的480x360_0_q95_c421024x0_1_q95,也就是将低分辨率的图片地址的480x360_0_q95_c42改为1024x0_1_q95就可以访问高分辨率的图片。

下面我们使用代码来实现自动保存当前页面的所有高分辨率的汽车模型。

前期准备

Python == 3.8.5
BeautifulSoup

代码实现

"""
爬取汽车之家某品牌汽车的第一页图片
"""
import requests
from bs4 import BeautifulSoup
import os

class Spider:
    def __init__(self, url, data_dir):
        self.data_dir = data_dir # 图片存储目录
        self.url = url # 爬虫目标网址
        self.img_urls = [] # 图片地址数组
        self.soup = BeautifulSoup(requests.get(url=url).text, 'lxml')

        if os.path.exists(data_dir):
            os.removedirs(data_dir)
        os.makedirs(data_dir)
        print('创建文件夹', data_dir)


    def get_img_url(self):
        imgUrl = self.soup.find_all('img')
        for img in imgUrl:
            src = img.get('src')
            # 将当前页面下爬取得到的图片的地址更改为高分辨率的图片地址
            src = str(src).replace('480x360_0_q95_c42_', '1024x0_1_q95_') 
            if src.find('1024x0_1_q95_') == -1:
            	# 若不存在高分辨率的图片,则弃存
                continue
            self.img_urls.append(src)


    def save_img(self):
        i = 0
        for src in self.img_urls:
            img_name = '%d.jpg'%(i)
            # src的值为 //car3.autoimg.cn/cardfs/product/g24/M07/B2/E0/xxx.jpg 因此需要加上http:才能被访问
            src = 'http:' + src 
            content = requests.get(src).content
            with open(os.path.join(data_dir, img_name), 'wb') as f:
                f.write(content)
                f.close()
            print('成功保存%d.jpg'%(i))
            i += 1

if __name__ == '__main__':
    url = 'https://car.autohome.com.cn/pic/series/4171-1.html'
    data_dir = os.path.split(url)[-1] # 即在当前目录下创建4171-1.html文件夹,图片将保存在里面
    s = Spider(url = url , data_dir = data_dir)
    s.get_img_url()
    s.save_img()
    pass

【注】

我们在保存网址图片的时候,可以先获取图片的内容信息使用变量存储content = requests.get(src).content(),再新建文件写入信息

with open('../路径/文件名称.后缀', 'wb') as f:
    f.write(content)
    f.close()
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

people_king

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值