首页 > 编程语言 >【python】这么**得小姐姐网~不敢赶紧采集一波~免得它没了

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

时间:2022-10-21 18:55:35浏览次数:77  
标签:小姐姐 请求 img python 采集 url 数据 response 图片

前言

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

 

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

 

 


环境使用:

  • 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)

 

 

 

 

 

 

 

 

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

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

尾语

标签:小姐姐,请求,img,python,采集,url,数据,response,图片
From: https://www.cnblogs.com/Qqun261823976/p/16814504.html

相关文章

  • 如何快速在Ubuntu上搭建python环境?
    如何快速在Ubuntu上搭建python环境?一、准备好python源码包使用curl命令获取python源码包的过程很缓慢且容易失败,因此提前去官网下载好后放在本地是最好的办法。二、启动......
  • 正则表达式(C、C++、Python、Shell)
    撰写本文档的初衷本来是想介绍正则表达式怎么写,但是百度一搜,正则表达式的教程的质量已经相当高,我便不在班门弄斧了。正则表达式是一种方法,在不同的语言中,它的应用样式可能......
  • python基础-数据类型间的转换
    数据类型转换:将自身数据类型转化成新的数据类型,并拥有新数据类型相关操作的过程;为方便更好的帮助处理业务,将数据变更为更适合业务场景的类型;a='1', 此时想使用数字的......
  • python
    基础赋值打印word="""12345段落"""print(word[0:6])输出结果12345换行的话是空格字符不换行输出print('xyz',end="")print('dnf')......
  • PLC采集网关实现台达 PLC Delta_DVP 接入OPC UA云平台
    COM口采集台达PLCDelta_DVP的配置工业智能网关一共有四个COM接口,4个COM口的配置内容一样,COM1固定为RS232,COM2、COM3和COM4是RS232/RS485可选串口(默认为RS485)。因台达PL......
  • PLC采集网关实现台达 PLC Delta_DVP 接入阿里云平台
    COM口采集台达PLCDelta_DVP的配置工业智能网关一共有四个COM接口,4个COM口的配置内容一样,COM1固定为RS232,COM2、COM3和COM4是RS232/RS485可选串口(默认为RS485)。因台达PL......
  • PLC采集网关实现台达 PLC Delta_DVP 接入华为云平台
    COM口采集台达PLCDelta_DVP的配置工业智能网关一共有四个COM接口,4个COM口的配置内容一样,COM1固定为RS232,COM2、COM3和COM4是RS232/RS485可选串口(默认为RS485)。因台达PL......
  • Python 发送邮件的几种情况
    本次记录一下Python发送邮件的几种情况:1、正常发送2、正文带图片3、正文带表格4、正文带附件 首先来看一下Python发送邮件使用到的模块##导入模块fromemail.mi......
  • python的高级特性-迭代概念
    迭代Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身>>>fori,valueinenumerate(['A','B','C']):...prin......
  • Python pygame新手入门基础教程
    pygame简介 pygame可以实现python游戏的一个基础包。  pygame实现窗口 初始化pygame,init()类似于java类的初始化方法,用于pygame初始化。pygame.init()......