Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3606909
  • 博文数量: 365
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2522
  • 用 户 组: 普通用户
  • 注册时间: 2019-10-28 13:40
文章分类

全部博文(365)

文章存档

2023年(8)

2022年(130)

2021年(155)

2020年(50)

2019年(22)

我的朋友

分类: Python/Ruby

2022-09-21 13:58:27

# 第一版

#-*-coding:utf-8-*-

import os

import re

import time

import requests

import bs4

from bs4 import BeautifulSoup

# 手动写入目标套图的首页地址

download_url = ""

# 手动写入目标套图的页数

page_num = 25

# 创建一个文件夹用来保存图片

file_name = "测试图库"

# 目标图片下载地址的前半部分(固定不变那部分,后半段是变化的,需要解析网页得到)

imgae_down_url_1 = ""

# 创建文件夹

def CreateFolder(file):

    """创建存储数据文件夹"""

    flag = 1

    while flag == 1:    # 若文件已存在,则不继续往下走以免覆盖了原文件

        if not os.path.exists(file):

            os.mkdir(file)

            flag = 0

        else:

            print('该文件已存在,请重新输入')

            flag = 1

            time.sleep(1)

        # 返回文件夹的路径,这里直接放这工程的根目录下

        path = os.path.abspath(file) + "\\"

    return path

# 下载图片

def DownloadPicture(download_url, list, path):

    # 访问目标网址

    r = requests.get(url=download_url, timeout=20)

    r.encoding = r.apparent_encoding

    soup = BeautifulSoup(r.text, "html.parser")

    # 解析网址,提取目标图片相关信息,注:这里的解析方法是不固定的,可以根据实际的情况灵活使用

    p = soup.find_all("p")

    tag = p[0].find_all("img")  # 得到该页面目标图片的信息

    # 下载图片

    j = 0

    for i in range(list, list + 3):

        if(j < len(tag) and tag[j].attrs['src'] != None) :

            img_name = str(i) + ".jpg" # 以数字命名图片,图片格式为jpg

            # 获取目标图片下载地址的后半部分

            imgae_down_url_2 = tag[j].attrs['src']

            j = j + 1

            # 把目标图片地址的前后两部分拼接起来,得到完整的下载地址

            imgae_down_url = imgae_down_url_1 + imgae_down_url_2

            print("imgae_down_url: ", imgae_down_url)

            # 下载图片

            try:

                img_data = requests.get(imgae_down_url)

            except:

                continue

            # 保存图片

            img_path = path + img_name

            with open(img_path,'wb') as fp:

                fp.write(img_data.content)

            print(img_name, "   ******下载完成!")

# 主函数

if __name__ == "__main__":

    # 创建保存数据的文件夹

    path =外汇跟单gendan5.com CreateFolder(file_name)

    print("创建文件夹成功: ", path)

    # 按页下载图片

    for i in range(0, page_num):

        if i == 0 :

            page_url = download_url # 首页网址,注:因为这个网站首页和后面那些页面网址的规则不一样,所以这里要区分开来

        else :

            page_url = download_url[:-5] + "_" + str(i) + ".html"  # 2页往后的网址,都是用数字来排布页面

        # 下载图片

        # print("page_url: ", page_url)  

        DownloadPicture(page_url, i * 3, path)  # :这个网站每一页最多是3张图片,每张图片我都用数字命名

    print("全部下载完成!", "" + str(len(os.listdir(path))) + "张图片")

阅读(439) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~