999宝藏网

 找回密码
 

QQ登录

只需一步,快速开始

  • 445阅读
  • 5回复

[[Windows]] 爬取超清美图python爬虫学习成品和源码

[复制链接]

49

主题

52

帖子

197

积分

宝藏小学生

Rank: 4

帖子
52
金币
140
威望
0
积分
197
股份
0
热心值
0
宝藏币
0
发表于 2021-3-30 14:17:52 | 显示全部楼层 |阅读模式
功能说明:
1.批量爬取高清图
2.支持自定义cookie爬取超清图(需要有会员,不然每天只能爬成功一张)

演示视频:
https://www.bilibili.com/video/BV1Cb4y1Q73j/
代码:
[Python] 纯文本查看 复制代码import requests, bs4, time, json, os, urllib, timeclass NetbiAn():    def __init__(self, cookie=None):        '''        彼岸图库        :param cookie:  自定义cookie,不填就默认我的cookie        '''        self.url = 'https://pic.netbian.com/'        if cookie == None:            self.headers = {                'cookie': '__yjs_duid=1_5497b819a72afc9101dd25f2d5726a8e1616818734114; __guid=216607383.3773875649706524700.1616818734566.507; Hm_lvt_526caf4e20c21f06a4e9209712d6a20e=1616818735; zkhanecookieclassrecord=%2C54%2C66%2C; PHPSESSID=varai3ubq9gf8ri9vpb7ppsrm5; zkhanmlusername=%B7%B2%CA%C2%BF%B4%C8%BA%CE%C4%BC%FE; zkhanmluserid=4729080; zkhanmlgroupid=1; zkhanmlrnd=zkIOXHSZ8ya4GKjTuTxA; zkhanmlauth=0b23850ea3f69277fce68255bf7e776c; ',                'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',                'x-requested-with': 'XMLHttpRequest'}        else:            self.headers = {                'cookie': cookie,                'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',                'x-requested-with': 'XMLHttpRequest'}    def get_HDimg_url(self, id):        '''        获取超清图片的下载地址        :param id:        :return:        '''        api_url = 'https://pic.netbian.com/e/extend/downpic.php'        params = {'id': id}        res = requests.get(api_url, headers=self.headers, params=params)        js = json.loads(res.text)        return self.url + js['pic']    def download_img(self, url, path):        '''        下载文件        :param url:地址        :param path: 保存文件名        :return:        '''        try:            res = requests.get(url, headers=self.headers)            with open(path, 'ab')as f:                f.write(res.content)                print(path, '下载成功!')        except Exception as err:            print(err, '下载失败!')    def get_img_list(self, url='https://pic.netbian.com/new/', max_page=1, HD='1'):        '''        根据输入的目标类目url来爬取所属的图片,比如最新的的https://pic.netbian.com/new/        :param url:目标类目的url        :param max_page:爬取多少页 默认为1        :param HD:是否爬取超清的图片,注意了这个需要您有会员,不然一天只能爬1张..没啥意义默认为False        :return:返回一个包含所有图片下载地址和name的列表        '''        img_list = []        #如果有人输入了这种带页码的网站则处理一下        if url.find('index_')!=-1:            url=url.split('index_')[0]        try:            for page in range(max_page):                print(f'正在获取{page+1}页的 图片资料...')                if page+1>=2:                    res = requests.get(url+f'index_{page+1}.html', headers=self.headers)                else:                    res = requests.get(url, headers=self.headers)                res.encoding = 'gbk'                bson = bs4.BeautifulSoup(res.text, 'lxml')                bson = bson.select('#main > div.slist > ul > li')                for item in bson:                    d = {}                    d['href'] = self.url + item.a['href']                    res = requests.get(d['href'], headers=self.headers)                    res.encoding = 'gbk'                    bs = bs4.BeautifulSoup(res.text, 'lxml')                    bs = bs.select_one('#img > img')                    img_id = d['href'].split('/')[-1].split('.')[0]                    if HD == '1':                        d['src'] = self.url+bs['src']                    else:                        # 超清                        d['src'] = self.get_HDimg_url(img_id)                    d['title'] = item.img['alt']                    d['name'] = img_id + '_' + d['title'].replace(' ', '_') + '.' + \                                d['src'].split('.')[-1]                    img_list.append(d)        except Exception as err:            print(err)        return img_list    def download_batch(self, img_list, dir_, tt=0.2):        '''        把整个列表的图都下载下来,因为有限制,所以没必要搞线程        :param img_list: 图片的列表数据        :param dir: 保存目录位置        :param tt: 每次下载等待时间 默认为0.2s        :return:        '''        length=len(img_list)        if length==0:            print('您不是会员,或者已经被限制了!')            return        print(f'一共有{length}个下载任务...')        try:            os.mkdir(dir_)        except:            pass        for item in img_list:            path = dir_ + '\\' + item['name']            self.download_img(item['src'], path)            time.sleep(tt)if __name__ == '__main__':    print('本脚本目标网站为:https://pic.netbian.com/','仅供技术交流,请勿用户违法或者商业用途,否则后果自负!')    print('建议:(30元年会可以自己登入后将cookie粘贴到下方,这样就能每天至少能爬取200张超清图10页,而1块钱7天的会员就每天20张,只能爬一页)')    key = input('回车确认cookie身份 如果需要自定义cookie可以直接输入 留空也可以:\n')    if len(key) > 5:        bah = NetbiAn(key)    else:        bah = NetbiAn()    HD = input('是否下载超清画质(如果有会员可以填2,不是会员就填1):\n1.普通画质\n2.超清画质\n')    type_url = input('输入目标类目的url,如果不填默认为:https://pic.netbian.com/new/\n')    max_page=int(input('爬取多少页?\n'))    if type_url=='':        img_list = bah.get_img_list(max_page=max_page,HD=HD)    else:        img_list=bah.get_img_list(type_url,max_page,HD)    bah.download_batch(img_list,'img')    input('所有任务结束!')
下载地址:
游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 1金币 +5 收起 理由
老顽童 + 5 发帖辛苦,谢谢分享!

查看全部评分

1.发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;微笑

2.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;微笑

3.如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【金币】加分不会扣除自己的积分,做一个热心并受欢迎的人!微笑

回复

使用道具 举报

45

主题

5242

帖子

1万

积分

宝藏教授

Rank: 14Rank: 14Rank: 14Rank: 14

帖子
5242
金币
4764
威望
1
积分
10008
股份
0
热心值
1
宝藏币
0
发表于 2021-3-30 20:52:21 | 显示全部楼层
谢楼主提供!

1.发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;微笑

2.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;微笑

3.如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【金币】加分不会扣除自己的积分,做一个热心并受欢迎的人!微笑

回复 支持 反对

使用道具 举报

0

主题

293

帖子

524

积分

宝藏中专生

Rank: 6Rank: 6

帖子
293
金币
231
威望
0
积分
524
股份
0
热心值
0
宝藏币
0
发表于 2021-3-31 10:09:26 | 显示全部楼层
这个是bat文件

1.发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;微笑

2.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;微笑

3.如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【金币】加分不会扣除自己的积分,做一个热心并受欢迎的人!微笑

回复 支持 反对

使用道具 举报

0

主题

102

帖子

256

积分

宝藏初中生

Rank: 5Rank: 5

帖子
102
金币
154
威望
0
积分
256
股份
0
热心值
0
宝藏币
0
发表于 2021-3-31 19:48:40 | 显示全部楼层
好东西,收了,顶你。

1.发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;微笑

2.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;微笑

3.如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【金币】加分不会扣除自己的积分,做一个热心并受欢迎的人!微笑

回复 支持 反对

使用道具 举报

0

主题

857

帖子

1284

积分

宝藏大专生

Rank: 8Rank: 8

帖子
857
金币
427
威望
0
积分
1284
股份
0
热心值
0
宝藏币
0
发表于 2021-4-1 17:09:46 | 显示全部楼层
爬取超清美图python爬虫学习成品和源码

1.发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;微笑

2.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;微笑

3.如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【金币】加分不会扣除自己的积分,做一个热心并受欢迎的人!微笑

回复 支持 反对

使用道具 举报

212

主题

4378

帖子

1万

积分

总版主

Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

帖子
4378
金币
7576
威望
0
积分
11979
股份
43
热心值
56
宝藏币
0

最佳新人新人进步宝藏新人进步勋章活跃会员音乐之星宝藏元老宝藏护航勋章终身成就总版主优秀斑竹区域管理管理员

发表于 2021-4-6 13:29:15 | 显示全部楼层
发帖辛苦,谢谢分享!
善良是心理养身的营养素,宽容是心理养身的调节阀,乐观是心理养身的不老丹,淡泊是心理养身的免疫剂。
回复 支持 反对

使用道具 举报

快速回复
您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

返回列表

|999宝藏网|sitemap|手机版|举报|申请友情链接|  

免责声明:

拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表999宝藏网立场!

999宝藏网论坛所发布的一切破解软件和补丁、注册机以及注册信息,仅限用于学习和研究目的。不得将上述内容用于商业或者非法途径!否则,一切后果请用户自负!

我们不生产软件,我们只是互联网上的搬运工,本站信息来自互联网,版权争议与本站无关,如果您喜欢该程序,请购买注册正版软件,获得正版优质服务!

请重视此声明,法律不容忽视!请支持正版,尊重版权!本站如有信息侵犯了您的权益,请联系:www@rin99.com及时删除!

Powered by Discuz! © 2001-2021 Comsenz Inc. (豫ICP备2021033223号) 备案图标 豫公网安备41142602000006号

Copyright © 2016-2021 999宝藏网 版权所有 All Rights Reserved.

GMT+8, 2021-12-7 00:57 , Processed in 0.075492 second(s), 15 queries , Redis On.

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