鱼C论坛

 找回密码
 立即注册
查看: 1619|回复: 3

[作品展示] 小白自学爬虫写了4K图片爬取

[复制链接]
发表于 2021-6-2 09:07:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
小白一枚,程序可能会有bug,还望鱼油们多多包涵
现在只是简单写了出来,基本功能实现,但是代码很冗余,还没有使用函数和类进行封装,改进之后会再进行上传。

                               
登录/注册后可看大图

import requests, os, sys, time
from lxml import etree

if __name__ == '__main__':
    if not os.path.exists('./4K图片'):
        os.mkdir('4K图片')

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

    img_type = input('''请选择要下载的类型编号:
                        1-4K风景    2-4K美女    3-4K动漫
                        4-4K影视    5-4K明星    6-4K汽车
                        7-4K动物    8-4K人物    9-4K宗教   
                                    10-4K背景
    ''')

    if img_type == '1':
        img_type = 'fengjing'
    elif img_type == '2':
        img_type = 'meinv'
    elif img_type == '3':
        img_type = 'dongman'
    elif img_type == '4':
        img_type = 'yingshi'
    elif img_type == '5':
        img_type = 'mingxing'
    elif img_type == '6':
        img_type = 'qiche'
    elif img_type == '7':
        img_type = 'dongwu'
    elif img_type == '8':
        img_type = 'renwu'
    elif img_type == '9':
        img_type = 'zongjiao'
    elif img_type == '10':
        img_type = 'beijing'
    else:
        print('输入错误,程序即将退出')
        print(3)
        time.sleep(1)
        print(2)
        time.sleep(1)
        print(1)
        sys.exit(100)

    page = int(input('请输入要下载的页数:'))

    for i in range(1, page + 1):
        if i == 1:
            url = 'https://pic.netbian.com/4k{}/'.format(img_type)
            page_text = requests.get(url=url, headers=headers)
            page_text.encoding = 'gbk'
            page_text = page_text.text

            # 创建etree对象,保存页面源码
            tree = etree.HTML(page_text)

            li_list = tree.xpath('//div[@class="slist"]/ul/li')

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

                img_page1_url = 'https://pic.netbian.com' + img_src
                img_data = requests.get(url=img_page1_url, headers=headers).content
                img_path = './4K图片/' + img_name + '.jpg'
                with open(img_path, 'wb') as f:
                    f.write(img_data)
                print(img_name + ' 保存完成!!')
        else:

            url = 'https://pic.netbian.com/4k{}/index_{}.html'.format(img_type, str(i))
            page_text = requests.get(url=url, headers=headers)
            page_text.encoding = 'gbk'
            page_text = page_text.text

            # 创建etree对象,保存页面源码
            tree = etree.HTML(page_text)

            li_list = tree.xpath('//div[@class="slist"]/ul/li')
            for img in li_list:
                img_src = img.xpath('./a/img/@src')[0]
                img_name = img.xpath('./a/img/@alt')[0]
                img_page_url = 'https://pic.netbian.com' + img_src
                img_data = requests.get(url=img_page_url, headers=headers).content
                img_path = './4K图片/' + img_name + '.jpg'
                with open(img_path, 'wb') as f:
                    f.write(img_data)
                print(img_name, ' 保存完成')




可以用户自选类型

可以用户自选类型

可以选取页数

可以选取页数
2.png
4.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-6-2 09:10:42 | 显示全部楼层
图片上传顺序错了,大家不要介意哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-2 10:10:37 From FishC Mobile | 显示全部楼层
这部分写的有些啰嗦
把这些type放在一个列表里,后面用索引提取

f img_type == '1':
        img_type = 'fengjing'
    elif img_type == '2':
        img_type = 'meinv'
    elif img_type == '3':
        img_type = 'dongman'
    elif img_type == '4':
        img_type = 'yingshi'
    elif img_type == '5':
        img_type = 'mingxing'
    elif img_type == '6':
        img_type = 'qiche'
    elif img_type == '7':
        img_type = 'dongwu'
    elif img_type == '8':
        img_type = 'renwu'
    elif img_type == '9':
        img_type = 'zongjiao'
    elif img_type == '10':
        img_type = 'beijing'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-6-2 10:40:48 | 显示全部楼层
wp231957 发表于 2021-6-2 10:10
这部分写的有些啰嗦
把这些type放在一个列表里,后面用索引提取

嗯嗯,感谢大佬提意见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-15 17:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表