ITPub博客

首页 > IT职业 > IT生活 > Python应用开发——爬取网页图片

Python应用开发——爬取网页图片

IT生活 作者:专注的阿熊 时间:2022-09-21 13:57:55 0 删除 编辑

# 第一版

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

import os

import re

import time

import requests

import bs4

from bs4 import BeautifulSoup

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

download_url = "https://www.xgmn09.com/XiaoYu/XiaoYu23172.html"

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

page_num = 25

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

file_name = " 测试图库 "

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

imgae_down_url_1 = "https://jpxgyw.net"

# 创建文件夹

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 = 跟单网gendan5.comstr(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 = 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))) + " 张图片 ")

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69946337/viewspace-2915598/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-08-23

  • 博文量
    410
  • 访问量
    276801