欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

实战项目 — 爬取 校花网图片

程序员文章站 2022-04-29 19:07:54
重点: 1. 指定路径创建文件夹,判断是否存在 2. 保存图片文件 ......

重点: 

1.  指定路径创建文件夹,判断是否存在

2. 保存图片文件

 

# 获得校花网的地址,图片的链接

import re
import requests
import time
import os

start = time.time()
num = 0                        # 为了记录爬的照片的次数

# 设置路径
path = 'd:\校花网'
# 判断目录下的文件夹是否已经创建,如果不存在
if not os.path.exists(path):
    # 则创建路径文件夹
    os.makedirs(path)
    print("完成创建文件夹!")
else:
    # 如果存在,则不需要创建
    pass
    print('路径已经存在,不需要创建!')

for url_name in range(5):
    response = requests.get(f'http://www.xiaohuar.com/list-1-{url_name}.html')
    # data就是我们要的校花f12里的东西啦,并用字符串格式保存
    data = response.text
    print("正在解析处理第{}页 ".format(url_name))
    # print(data)
    # 其中(.*?)表示我们所要获得的内容
    one_list = re.findall('" src="(.*?)" /></a>', data)
    # type str 这是为了让pycharm 更快的知道v是字符串格式方便导入内置方法
    for v in range(len(one_list)):
        # 这是为了让其中有些保护的图片变成正确的超链接格式
        if one_list[v].startswith('/d'):
            one_list[v] = f'http://www.xiaohuar.com/{one_list[v]}'

    for x in one_list:
        # 为了自动生成文件名,由于 one_list 网址有"/" 分割,最后的数据太长,所以名字也很长
        # x 是链接 随机一条如: http://www.xiaohuar.com//d/file/20190818/a73a16dfeaf75bd16d2e355642e1e16e.jpg
        name = x.split('/')[-1]
        # 再次分析链接,获得图片的信息
        dd = requests.get(x)
        # 图片信息装换成机械语言
        d_data = dd.content

        with open(f'd:\校花网\{name}','wb') as fw:
            fw.write(d_data)
            # 强行把缓冲区中的内容放到磁盘中
            fw.flush()
            num += 1
            print(f'已经爬取{num}张')
        # 防止段时间请求过多
        time.sleep(1)

print("全部完成,耗时%d s"%(start - time.time()))