szsnk144864 发表于 2022-8-26 23:05

【多线程】Python爬虫爬取2K小姐姐美女模特写真图,大家一起学习进步

本帖最后由 szsnk144864 于 2022-8-26 23:12 编辑

目标网站:https://www.9eip.com/acheng/bizhi/                           代码看置顶哦

小白代码,大佬勿笑,,{:1_907:}    大家一起学习进步


感谢 @话痨司机啊分享的代码,让我学到了很多

由于网站采用了不知道啥办法,我的能力有限没办法获取网页源码,,所以用了另一种方法获取下载链接。

还有由于能力有限,让我没办法获取到每个分类(分类的ID看下图,修改ID就可以切换分类了)的总页数和每张图的名字,就随意搞了一个名字,
希望有大佬可以指点指点{:1_889:}{:1_889:}{:1_889:}

如线程太高,频繁下载等种种情况,对网站产生的后果,由你自己负责哦!代码主要是大家一起来学习的,希望大家可以温柔一点哦










szsnk144864 发表于 2022-8-26 23:08

'''本代码仅供学习参考,如线程数太高,频繁下载等种种情况,对网站产生的后果,由你自己自己负责哦'''

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()

话痨司机啊 发表于 2022-8-27 00:35


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)

Clarkchaoren 发表于 2022-8-27 08:26

感谢分享

WD丶活着 发表于 2022-8-26 23:49

流量密码??

Patches 发表于 2022-8-26 23:17

谢谢楼主分享源码   {:301_1004:}我爬点壁纸

szsnk144864 发表于 2022-8-26 23:17

Patches 发表于 2022-8-26 23:17
谢谢楼主分享源码   我爬点壁纸

大家一起学习进步{:1_893:}

caac 发表于 2022-8-26 23:26

Python爬虫能获取到优质资源,谢分享

zlf2020999 发表于 2022-8-26 23:53

编码怎么样呀?小白需要一个完整的呀,谢谢!

icodeme 发表于 2022-8-27 00:21

可以可以{:1_921:}{:1_921:}

Supermexyh 发表于 2022-8-27 07:31

WD丶活着 发表于 2022-8-26 23:49
流量密码??

我也觉得这样,一堆人都在发类似的东西。。。。。
页: [1] 2 3 4
查看完整版本: 【多线程】Python爬虫爬取2K小姐姐美女模特写真图,大家一起学习进步