今天我们来分享一个用Python获取COS小姐姐美图得代码

开发环境:

  • python 3.8 开源 免费的 (统一 3.8)

  • Pycharm YYDS python最好用的编辑器 不接受反驳…

模块使用:

第三方模块 需要安装 在cmd里面 进行 pip install requests

  • requests >>> 数据请求模块

  • re >>> 匹配提取数据

  • os >>> 自动创建文件夹

基本思路: <公式>

一. 数据来源分析:

  1. 明确需求:

    • 采集的网站是什么

    • 采集的数据是什么

      图集相关的内容

  2. 分析一下数据内容在什么地方

    分析图片url地址在哪里可以获得

    请求链接: http://网站名字拼音.com/photo/show/132425 --> 网页源代码中就有 图片url 数据

二. 代码实现步骤:

  1. 发送请求, 模拟浏览器对于 url地址 发送请求

    请求链接: <图集详情页>

  2. 获取数据, 获取网页源代码

    获取所有数据内容

  3. 解析数据, 提取我们想要的数据内容

    图集标题 / 图片url地址

  4. 保存数据, 保存到本地文件夹当中

代码展示

导入模块

# 导入数据请求模块
import requests
# 导入正则表达式模块
import re
# 导入文件操作模块
import os

python符号都是英文符号

字符串引号: 单引号 / 双引号 / 三引号 <也可以作为多行注释>

单引号里面必须是双引号 不能是单引号


模拟浏览器

headers = {
    # User-Agent 用户代理 表示浏览器基本身份信息
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}

请求链接 图集列表页面

link = 'http://*****/photo/list/0-4-1'

发送请求

html_data = requests.get(url=link, headers=headers).text

解析数据 .*? 可以匹配任意字符<除了\n>

img_id_list = re.findall('<a href="/photo/show/(\d+)">', html_data)

for循环

for img_id in img_id_list:
    print(img_id)

请求链接

    url = f'http://*****/photo/show/{img_id}'

发送请求

    response = requests.get(url=url, headers=headers)
    # <Response [200]> 表示请求成功
    print(response)

re.findall(‘什么数据’, ‘什么地方’) --> re模块<工具>里面findall方法 <找到所有我们想要的数据内容>


标题

    title = re.findall('<title>(.*?) - 次元岛</title>', response.text)[0]

替换特殊字符

    new_title = re.sub(r'[\/:*?"<>|]', '', title)
    print(title)

图片内容 <列表>

    img_list = re.findall('<a href="javascript:;"><img src="(.*?)"></a>', response.text)
    num = 1

把列表中图片链接 一个一个提取出来, for循环遍历

    for img in img_list:    

获取图片的二进制数据

        img_content = requests.get(url=img, headers=headers).content

自动创建文件夹

        file = f'data\\{new_title}\\'
        # 判断是否存在这个文件夹
        if not os.path.exists(file):
            # 自动创建文件
            os.makedirs(file)

        with open(file + new_title + str(num) + '.jpg', mode='wb') as f:
            f.write(img_content)
            num += 1
        print(img)

图集展示


尾语

好啦,本文章到这里就结束拉

有喜欢的小伙伴记得给博主一个三连哦~

希望你在学习的路上不忘初心,坚持不懈,学有所成

把时间和精力,放在自己擅长的方向,去坚持与努力,

如果不知道自己擅长什么,就尽快找到它。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐