【python】这么**得小姐姐网~不敢赶紧采集一波~免得它没了

前言

大家早好、午好、晚好吖~

今天我们来采集一下这个小姐姐网~



环境使用:

  • Python 3.8 解释器

  • Pycharm 编辑器

  • import re

  • import requests >>> pip install requests


如果安装python第三方模块:

  1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车

  2. 在pycharm中点击Terminal(终端) 输入安装命令


如何配置pycharm里面的python解释器?

  1. 选择file(文件) >>> setting(设置) >>> Project(项目) >>> python interpreter(python解释器)

  2. 点击齿轮, 选择add

  3. 添加python安装路径


pycharm如何安装插件?

  1. 选择file(文件) >>> setting(设置) >>> Plugins(插件)

  2. 点击 Marketplace 输入想要安装的插件名字 比如:翻译插件 输入 translation / 汉化插件 输入 Chinese

  3. 选择相应的插件点击 install(安装) 即可

  4. 安装成功之后 是会弹出 重启pycharm的选项 点击确定, 重启即可生效

源码、教程 点击 蓝色字体 自取 ,我都放在这里了。


python实现案例: 批量数据采集/下载 <有方法 通用>

一. 数据来源分析

  1. 明确需求, 我们采集网上什么数据内容, 在什么地方

    分析我们想要高清原图在什么地方有

  2. 浏览器自带工具: 开发者工具 F12

    • 鼠标右键点击 插件 选择 network 刷新网页
    • 点击选择 Img 可以直接找到图片地址

    继续分析, 图片链接是从哪里来的

    • 通过搜索分析, 可以知道, 我们想要图片原图url 就在 图片详情页网页源代码里面

二. 代码实现步骤:

  1. 发送请求, 模拟浏览器对于 图片目录页面 发送请求

  2. 获取数据, 获取服务器返回响应数据
    开发者工具 response

  3. 解析数据, 提取我们想要数据内容
    图片详情页url地址

  4. 发送请求, 模拟浏览器对于 图片详情页url 发送请求

  5. 获取数据, 获取服务器返回响应数据
    开发者工具 response

  6. 解析数据, 提取我们想要数据内容
    图片原图高清url地址, 以及 标题

  7. 保存数据, 把图片保存文本文件夹

代码

# 导入数据请求模块 --> 第三方模块, 需要 pip install requests   不会 0  会 1
import requests
# 导入正则模块  内置模块 不需要安装的
import re

“”"
1. 发送请求, 模拟浏览器对于 图片目录页面url 发送请求

  • python代码如何模拟浏览器?

使用headers 请求头

实现多页数据采集:

分析请求url地址变化规律 --> 分析图片目录页面url地址变化规律

每个网站数据结构是不一样, 数据来源也不一样, 但是分析数据来源思路 和 代码实现步骤过程 差不多的

“”"

for page in range(1, 5):
    # 字符串格式化方法: 把page传入到字符串当中
    print(f'=================正在采集第{page}页的数据内容=================')

确定请求链接

有网站名得链接发出来就不给过拉~宝子们自己按照下面得图添加一下哦

或点击 蓝色字体 自取 ,我都放在这里了。

    # 模拟浏览器 --> headers 请求头
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
    }
    # 发送请求
    response = requests.get(url=url, headers=headers)

<Response [200]> 表示请求成功

“”"

  1. 获取数据, 获取服务器返回响应数据

开发者工具 response

  • response.text 获取响应文本数据

  • response.json() 获取响应json字典数据 <一定要完整json数据, 否则就会报错>

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

图片详情页url地址

re.findall(‘匹配什么数据’, ‘什么地方’) 调用re模块里面findall 去找到匹配数据: 找到所有我们想要数据内容

从 什么地方 去匹配查询 什么数据

response.text 去匹配 <li><a target="_blank" href="(.*?)" alt="(.*?)" title=".*?"> 其中 (.*?) 就是我们想要的数据

  • () 表示精确匹配: 我们要的内容

  • 没有括号 泛匹配 不要的内容

  • .*? 通配符 元字符 . 表示匹配任意字符<除了换行符\n以外> * 匹配前一个字符0或者无限个 ? 非贪婪匹配模式

“”"

提取详情页url地址

    img_info = re.findall('<li><a target="_blank" href="(.*?)" alt="(.*?)" title=".*?">', response.text)
    # for循环遍历 把列表里面元素 一个一个提取出来
    for img, title in img_info:

img: 图片详情页url地址

title: 图片标题

“”"

4. 发送请求, 模拟浏览器对于 图片详情页url 发送请求

5. 获取数据, 获取服务器返回响应数据

开发者工具 response

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

图片原图高清url地址, 以及 标题

[0] 列表索引取值 提取第一个元素

“”"

        # 发送请求 获取响应文本数据
        html_data = requests.get(url=img, headers=headers).text
        # 提取原图url地址
        img_url = re.findall('<img alt=".*?" title=".*?" src="(.*?)">', html_data)[0]

“”"

7. 保存数据, 把图片保存文本文件夹

  • 发送请求, 获取数据内容

  • response.content 获取响应二进制数据 <图片/视频/音频/特定格式文件…>

如果图片名字一样的话, 会覆盖掉

  • split() 字符串分割 返回列表

  • [-1] 列表索引取值, 提取最后一个元素

  • title + img_url.split('/')[-1] 字符串拼接

“”"

        # 获取二进制数据
        img_content = requests.get(url=img_url).content
        # 替换特殊字符
        img_title = title + img_url.split('/')[-1]
        img_title = re.sub(r'[\/:*?:<>|]', '_', img_title)
        with open('img漫画\\' + img_title, mode='wb') as f:
            f.write(img_content)
        print(img_url, img_title)

效果








文章看不懂,我专门录了对应的视频讲解,本文只是大致展示,完整代码和视频教程点击下方蓝字

点击 蓝色字体 自取,我都放在这里了。

尾语 💝

好了,我的这篇文章写到这里就结束啦!

有更多建议或问题可以评论区或私信我哦!一起加油努力叭(ง •_•)ง

喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!

请添加图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值