【多线程】Python爬虫爬取2K小姐姐美女模特写真图,大家一起学习进步
本帖最后由 szsnk144864 于 2022-8-26 23:12 编辑目标网站:https://www.9eip.com/acheng/bizhi/ 代码看置顶哦
小白代码,大佬勿笑,,{:1_907:} 大家一起学习进步
感谢 @话痨司机啊分享的代码,让我学到了很多
由于网站采用了不知道啥办法,我的能力有限没办法获取网页源码,,所以用了另一种方法获取下载链接。
还有由于能力有限,让我没办法获取到每个分类(分类的ID看下图,修改ID就可以切换分类了)的总页数和每张图的名字,就随意搞了一个名字,
希望有大佬可以指点指点{:1_889:}{:1_889:}{:1_889:}
如线程太高,频繁下载等种种情况,对网站产生的后果,由你自己负责哦!代码主要是大家一起来学习的,希望大家可以温柔一点哦
'''本代码仅供学习参考,如线程数太高,频繁下载等种种情况,对网站产生的后果,由你自己自己负责哦'''
import os, re, requests
import time
from concurrent.futures import ThreadPoolExecutor
# 线程数,不要太高,对网站温柔一点
NBi = 5
headers = {
# 'Referer': 'https://www.9eip.com/acheng/bizhi/',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36'
}
def start_requests(fenlei, page):
# feilei是选择需要下载类目的ID(我是这么理解的),page 是页数,通过从每一页里提取图片名
url = f'https://www.9eip.com/acheng/bizhi/api.php?cid={fenlei}&start=0&count={page + 1}'
response = requests.get(url=url, headers=headers)
# 获取图片下载名和后缀
get_img_id = re.findall((r'"url":.*?85.*?/(.*?)","'), (response.text), re.I)
# 由于网页代码里没有看到1080的,所以强行加了一个,如果需要1920 X 1080 的朋友,可以把这个注释打开,下面的注释掉
# more_large_img = 'http://p3.qhimg.com/bdm/1920_1080_85/' + get_img_id
# 获取更大尺寸
more_large_img = 'http://p0.qhimg.com/bdr/__85/' + get_img_id
response.close()
return get_img_id, more_large_img
def save_img(img_folder_name, page):
# 在d 盘创建文件夹,可以修改此处,自定义存储位置
path = 'd://desktop/爬虫图库/' + img_folder_name + '/'
if not os.path.exists(path):
os.mkdir(path)
# 我的立即就是分配名称和名字,,6 是这个类目的 id(我是这么理解的)
name, url = start_requests(6, page)
# 图片存储路径
img_save_path = path + name
# 获取图片下载地址
res = requests.get(url=url, headers=headers).content
with open(img_save_path, 'wb') as f:# 存储图片
f.write(res)# 写入图片
print(name + ' >>>>>>>>>>>>>>>>>>>>下载完成')
f.close()
def main():
with ThreadPoolExecutor(max_workers=NBi) as executor:
#由于能力有限,不知道应该怎么获取总页数,所以就自己弄了一个页数出来,,,,
for ss in range(0, 220):
print(f'............正在下载第{ss + 1}页............')
executor.submit(save_img, '美女模特', ss)
time.sleep(0.5)# 给服务器休息休息,
if __name__ == '__main__':
main()
import requests
api_url = lambda cid,start: f'https://www.9eip.com/acheng/bizhi/api.php?cid={cid}&start={start}&count=30'
cid = '360new' # 类型
start = '0' # 每页+30
data = requests.get(api_url(cid,start)).json()
u = [{url.get('url').split('/')[-1].split('.'):url.get('url')} for url in data.get('data')]
print(u)
感谢分享 流量密码?? 谢谢楼主分享源码 {:301_1004:}我爬点壁纸 Patches 发表于 2022-8-26 23:17
谢谢楼主分享源码 我爬点壁纸
大家一起学习进步{:1_893:} Python爬虫能获取到优质资源,谢分享 编码怎么样呀?小白需要一个完整的呀,谢谢! 可以可以{:1_921:}{:1_921:} WD丶活着 发表于 2022-8-26 23:49
流量密码??
我也觉得这样,一堆人都在发类似的东西。。。。。