Python教程

python爬虫爬取4K图片实例

本文主要是介绍python爬虫爬取4K图片实例,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

爬取目标网站https://pic.netbian.com/4kfengjing/index.html

之前写的时候发现爬取的图片都是缩略图,不是原图4k的,经过改良得以实现

思路:

 

话不多说,详细思路,直接上代码

# -*- codeing = utf-8 -*-
# @Time : 2021/7/19 15:32
# @Author : ArthurHuang
# @File : 8_4k图片解析爬取(优化).py
# @Software : PyCharm
import requests

from lxml import html
etree = html.etree #新版本etree现在需要这样导入

import  os

if __name__ == "__main__":
    url = "https://pic.netbian.com/4kfengjing/"  #爬取的是第一页
    # UA伪装:将对应的User-Agent封装到一个字典中
    headers = {
        "User-Agent": "Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, like Gecko) Chrome / 91.0.4472.77 Safari / 537.36"
    }

    #这三句代码设置想要数据的编码  编码格式跟爬取的网站的格式一样 才不会乱码
    response =  requests.get(url=url,headers=headers)
    #response.encoding='gbk' 上下两种方法都是可以的
    page_text = response.text

    #实例化etree对象
    tree = etree.HTML(page_text)

    #数据解析:这里解析的是第一页
    a_list = tree.xpath('//div[@class="slist"]/ul/li/a')

    #创建一个文件夹保存图片
    if not os.path.exists('./4kpicLibs'):
        os.mkdir('./4kpicLibs')

    for a in a_list:
        img_name = a.xpath('./img/@alt')[0] + '.jpg'
        img_name = img_name.encode('iso-8859-1').decode('gbk') #通用处理中文乱码的解决方案
        #print(img_name)

        imgpage_src = 'https://pic.netbian.com/'+a.xpath('./@href')[0]  # ./表示当前这个li标签
        # 对图片详情页发起请求,解析出图片的herf
        response = requests.get(imgpage_src, headers=headers)
        imgsrc_text = response.text
        # 实例化etree对象
        imgtree = etree.HTML(imgsrc_text)
        src_list = imgtree.xpath('//div[@class="photo-pic"]/a') #原图片所在的网页

        for img in src_list:
            img_src = 'https://pic.netbian.com/' + img.xpath('./img/@src')[0]  # ./表示当前这个li标签
            #print(img_src)
            img_data = requests.get(url=img_src, headers=headers).content #content 处理图片的二进制数据
        img_path = '4kpicLibs/'+img_name
        with open(img_path,'wb')as fp:
            fp.write(img_data)
            print(img_name,"下载成功!!!")

 项目实现的还不是很完美,因为个人能力,分页获取图片功能无法实现,原因在于

我发现第一页的url是https://pic.netbian.com/4kfengjing/index.html

往后的url是

https://pic.netbian.com/4kfengjing/index_2.html

https://pic.netbian.com/4kfengjing/index_3.html

....

我不知道这里要怎么处理,如果没有那个_,可以用占位符加上循环获取,但是那个_把我给整懵了,有能力的大牛麻烦可以在评论区告诉我一下,感谢!

这篇关于python爬虫爬取4K图片实例的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!