当前位置:   article > 正文

Python爬取4K图片

Python爬取4K图片

今天,我们用Python来爬取4K图片的数据,并保存图片。
首先打开网址:http://pic.netbian.com/4kfengjing/
在这里插入图片描述打开F12开发者工具,elements栏中定位到图片信息。其中我们可以看出,所有的图片信息都是在一个< div>标签中,并且该div拥有属性class=“slist”,每一个< li >标签内容对应一张图片信息,只要从< li >标签信息中获取到src属性值、alt属性值即可当做图片的名称和访问地址:
src="/uploads/allimg/180325/192357-1521977037fd66.jpg",
alt=“劳特布龙嫩山谷4k壁纸”。
在这里插入图片描述地址其中一张图片,发现图片访问地址为:http://pic.netbian.com/uploads/allimg/180325/192357-1521977037fd66.jpg,比我们之前获得的src要多出一部分字符串“http://pic.netbian.com”,这里我们需要用到字符串的拼接,组成一个完整的图片下载地址
在这里插入图片描述
图片下载成功后,存储到本地文件夹中保存。
实现代码如下:

import requests
from lxml import etree
import os

if __name__=="__main__":
    # URL地址
    url = 'http://pic.netbian.com/4kfengjing/'
    headers = {
        'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36'
    }
    # 创建文件夹保存图片数据
    if not os.path.exists('./data/4kPic'):
        os.mkdir('./data/4kPic')

    # 爬取页面源数据
    response = requests.get(url=url,headers=headers)
    # response.encoding = 'gbk'
    page_text = response.text

    # 数据解析:src属性值、alt属性值
    tree = etree.HTML(page_text)
    li_list = tree.xpath('//div[@class="slist"]/ul/li')
    for li in li_list:
        # 获取图片的src属性值
        img_src = 'http://pic.netbian.com/'+ li.xpath('./a/img/@src')[0]
        # 获取图片的alt属性值
        img_name = li.xpath('./a/img/@alt')[0]+'.jpg'
        img_name = img_name.encode('iso-8859-1').decode('gbk')

        # print(img_name,img_src)

        # 访问图片地址
        img_data = requests.get(url=img_src,headers=headers).content
        # 持久化存储图片数据
        img_path = 'data/4kPic/'+img_name
        with open(img_path,'wb') as fp:
            fp.write(img_data)
            print(img_name,'打印成功!!!')

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

运行结果如下:
在这里插入图片描述当前页面的图片爬取成功后,如果想要爬取所有页面的图片该如何操作了?比如这里总共有190页的数据
在这里插入图片描述
我们先尝试一下翻页,看看页面URL变化
在这里插入图片描述
URL的地址变成http://pic.netbian.com/4kfengjing/index_3.html,那么我们是不是只要把index_后面的数字参数化,然后循环抓取页面的数据就可以了。这里我们可以使用一个for循环来获取页数,然后填入URL地址中就可以了,代码实现如下:

    url = 'http://pic.netbian.com/4kfengjing/index_%d.html'
    for pageNum in range(1,191):
        new_url = format(url%pageNum)
  • 1
  • 2
  • 3

下面显示所有代码:

import requests
from lxml import etree
import os

if __name__=="__main__":
    # URL地址
    # url = 'http://pic.netbian.com/4kfengjing/'
    # 创建文件夹保存图片数据
    if not os.path.exists('./data/4kPic'):
        os.mkdir('./data/4kPic')

    url = 'http://pic.netbian.com/4kfengjing/index_%d.html'
    for pageNum in range(1,191):
        new_url = format(url%pageNum)

        headers = {
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36'
        }

        # 爬取页面源数据
        response = requests.get(url=new_url, headers=headers)
        # response.encoding = 'gbk'
        page_text = response.text

        # 数据解析:src属性值、alt属性值
        tree = etree.HTML(page_text)
        li_list = tree.xpath('//div[@class="slist"]/ul/li')
        for li in li_list:
            # 获取图片的src属性值
            img_src = 'http://pic.netbian.com/' + li.xpath('./a/img/@src')[0]
            # 获取图片的alt属性值
            img_name = li.xpath('./a/img/@alt')[0] + '.jpg'
            img_name = img_name.encode('iso-8859-1').decode('gbk')

            # print(img_name,img_src)

            # 访问图片地址
            img_data = requests.get(url=img_src, headers=headers).content
            # 持久化存储图片数据
            img_path = 'data/4kPic/' + img_name
            with open(img_path, 'wb') as fp:
                fp.write(img_data)
                print(img_name, '打印成功!!!')

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

运行结果如下:
在这里插入图片描述所有图片都保存到文件夹4kPic中
在这里插入图片描述现在我们使用Python爬取页面所有4K图片的需求算是实现了!!!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/403453
推荐阅读
相关标签
  

闽ICP备14008679号