吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1877|回复: 25
收起左侧

[Python 原创] 爬取图网的4K图片自动保存本地

  [复制链接]
龍魂小白 发表于 2023-7-17 19:50
本帖最后由 龍魂小白 于 2023-7-18 00:19 编辑

初学py爬虫,还在继续努力

微信图片_20230717195027.png
这个是单进程爬取,下边有个进程池获取 太猛自己悠着点

import os.path
import random
import time

import requests
from lxml import etree
import webbrowser

webbrowser.open('https://pic.netbian.com')

ua = input("请输入浏览器的User-Agent,不会的请百度\n")

print('''例如:https://pic.netbian.com/4kmeinv
              https://pic.netbian.com/4kfengjing
              https://pic.netbian.com
''')
uuuu = input("请输入彼岸图的URL不带'/'\n")

headers = {
    'User-Agent': ua
}
url = uuuu

def huoqu(urll):
    url = urll
    # print(url)

    respones = requests.get(url, headers=headers)
    mg = respones.content.decode("gbk")

    tree = etree.HTML(mg)
    img_url = tree.xpath('//ul[@class="clearfix"]//li')
    # print(img_url)

    for a in img_url:
        c = a.xpath('./a//img/@alt')[0]
        img_mg = a.xpath('./a//img/@src')
        img_mgg = requests.get('https://pic.netbian.com' + ''.join(img_mg))

        if not os.path.exists('彼岸图网'):
            os.mkdir("彼岸图网")
        with open(f'彼岸图网/{c}.jpg', 'wb') as f:

            f.write(img_mgg.content)
            print(f'彼岸图网/{c}.jpg,保存成功')

def zongpage(url):
    url = url
    print(url)

    respones = requests.get(url, headers=headers)
    mg = respones.content.decode("gbk")

    tree = etree.HTML(mg)
    page = tree.xpath('//div[@class="page"]/a/text()')

    zongpage = page[-2]
    print('总共:' + zongpage + '页')
    return zongpage

zongpagee = zongpage(url)

for a in range(1, int(zongpagee)):

    if a == 1:
        huoqu(url)
    else:
        uu = f'{url}/index_{a}.html'
        print(uu)
        huoqu(uu)
        time.sleep(random.randint(2, 5))




这个是进程池获取



import os.path
import random
import time
import requests
from lxml import etree
import threading
from multiprocessing import Pool
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'
}
url = 'https://pic.netbian.com'

def huoqu(urll):

    print('我已经运行了')

    # 发送HTTP请求,获取页面内容
    respones = requests.get(urll, headers=headers)
    mg = respones.content.decode("gbk")
    tree = etree.HTML(mg)
    # 使用XPath选择器提取图片URL和相关信息
    img_url = tree.xpath('//ul[@class="clearfix"]//li')

    for a in img_url:
        c = a.xpath('./a//img/@alt')[0]
        img_mg = a.xpath('./a//img/@src')
        img_mgg = requests.get('https://pic.netbian.com' + ''.join(img_mg))
        if not os.path.exists('彼岸图网'):
            os.mkdir("彼岸图网")
        with open(f'彼岸图网/{c}.jpg', 'wb') as f:
            f.write(img_mgg.content)
            print(f'彼岸图网/{c}.jpg,保存成功')

def zongpage(url):
    # 发送HTTP请求,获取页面内容
    respones = requests.get(url, headers=headers)
    mg = respones.content.decode("gbk")
    tree = etree.HTML(mg)
    # 使用XPath选择器提取总页数
    page = tree.xpath('//div[@class="page"]/a/text()')
    zongpage = page[-2]
    print('总共:' + zongpage + '页')
    return zongpage

zongpagee = zongpage(url)

if __name__ == '__main__':
    threads = []
#Pool(5)可以调整进程数量  不填则按照CPU最大核心数来并发不填会有死机风险,最好不要超过10
    pool = Pool(5)
    for a in range(1, int(zongpagee)):
        if a == 1:
            # 第一页直接调用huoqu函数
            huoqu(url)
        else:
            uu = f'{url}/index_{a}.html'
            print(uu)
            threads.append(uu)

    for i in range(1, int(zongpagee)):
        # 创建线程并启动
        pool.map(huoqu,threads)
        pool.close()

        # 随机延迟一段时间
        time.sleep(random.randint(2, 5))

    for t in threads:
        # 等待所有线程完成
        pool.join()
    print("完事")

免费评分

参与人数 1吾爱币 +7 热心值 +1 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

秋海棠地图 发表于 2023-7-28 17:13
对代码进行了一小点修改,可以运行了,但不能获取到4K的图片
[Python] 纯文本查看 复制代码
import os
import requests
from lxml import etree
from concurrent.futures import ThreadPoolExecutor

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'
}
url = 'https://pic.netbian.com'

def clean_filename(filename):
    # 使用正则表达式将特殊字符替换为空格
    return re.sub(r'[\\/:*?"<>|\n\r\t]', ' ', filename)

def huoqu(urll):
    # 发送HTTP请求,获取页面内容
    respones = session.get(urll, headers=headers)
    mg = respones.content.decode("gbk")
    tree = etree.HTML(mg)
    # 使用XPath选择器提取图片URL和相关信息
    img_url = tree.xpath('//ul[@class="clearfix"]//li')

    for a in img_url:
        c = a.xpath('./a//img/@alt')[0]
        c = clean_filename(c)  # 使用clean_filename函数来清理文件名
        img_mg = a.xpath('./a//img/@src')
        img_mgg = session.get('https://pic.netbian.com' + ''.join(img_mg))
        if not os.path.exists('彼岸图网'):
            os.makedirs("彼岸图网")
        with open(os.path.join('彼岸图网', f'{c}.jpg'), 'wb') as f:
            f.write(img_mgg.content)
            print(f'彼岸图网/{c}.jpg,保存成功')

def zongpage(url):
    # 发送HTTP请求,获取页面内容
    respones = session.get(url, headers=headers)
    mg = respones.content.decode("gbk")
    tree = etree.HTML(mg)
    # 使用XPath选择器提取总页数
    page = tree.xpath('//div[@class="page"]/a/text()')
    zongpage = page[-2]
    print('总共:' + zongpage + '页')
    return zongpage

if __name__ == '__main__':
    import re  # 导入re模块
    session = requests.Session()
    zongpagee = zongpage(url)

    with ThreadPoolExecutor(max_workers=4) as executor:
        for a in range(1, int(zongpagee)):
            if a == 1:
                # 第一页直接调用huoqu函数
                huoqu(url)
            else:
                uu = f'{url}/index_{a}.html'
                print(uu)
                executor.submit(huoqu, uu)

    session.close()
    print("完事")
吖力锅 发表于 2023-7-18 23:21
echoaku 发表于 2023-7-19 09:20
lingwushexi 发表于 2023-7-19 09:22
学习学习

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
bGl1 + 1 + 1 谢谢@Thanks!

查看全部评分

yu520 发表于 2023-7-19 09:55
学习一下,感谢楼主分享
evanjhon 发表于 2023-7-20 11:38
不错  收藏了  回头试下
jackxp2008 发表于 2023-7-20 13:20
我才刚学python,学习了,多谢大佬分享。
normandie2008 发表于 2023-7-20 21:38
都喜欢搞彼岸图片呢?
15705107305 发表于 2023-7-21 08:36
nice !!!
jddgh3 发表于 2023-7-23 09:59
感谢楼主分享,学习学习
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-22 16:27

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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