前言

嗨喽,大家好呀~这里是爱看美女的茜茜呐

又到了学Python时刻~


环境使用:

  • Python 3.8

  • Pycharm 2021.2版本


模块使用:

  • import requests >>> pip install requests

    -pip install -i https://pypi.doubanio.com/simple/ requests

  • import re

安装python第三方模块:

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

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


思路<通用模板>

一. 数据来源分析

  1. 明确自己采集数据, 是来自于哪里

    • 图片标题

    • 图片链接

    通过浏览器自带工具: 开发者工具

    进行抓包分析

    1. 打开开发者工具: 鼠标右键点击检查选择network / F12

    2. 刷新网页: 为了让本网页数据内容重新加载一遍

      找到图片链接:

      —> 分析有没有地方, 把所有图片地址都包含

    3. 通过开发者工具: 搜索功能去搜索查询对应数据包在哪里

由一个数据 —> 分析找到相关所有数据来源地址

二. 代码实现步骤:

基本四大步骤 发送请求, 获取数据, 解析数据, 保存数据

采集一页数据:

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

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

    开发者工具: response <网页源代码>

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

    • 图片标题

    • 图片链接

  4. 保存数据, 把图片内容保存到本地文件夹


代码展示

导入模块

# 导入数据请求模块 --> 第三方模块 需要安装 pip install requests  <手机第三方APP 需要自己下载>
import requests
# 导入正则模块 --> 内置模块 不需要安装  <相当于手机自带APP>
import re
# 导入文件操作模块 --> 内置模块 不需要安装
import os

PS:本篇完整源码如有需要的小伙伴可以加下方的群去找管理员免费领取

“”"

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

    • 导入模块是灰色, 不是报错 <没有使用模块>

    • 模拟浏览器
      如果不伪装模拟: 可能会被识别出来是爬虫程序, 从而得不到数据
      headers 请求头 --> 直接去复制

    • 请求方法选择是根据开发者工具来的 <根据浏览器来的>

    • <Response [200]>
      Response: 响应
      <> : 对象
      200:状态码 表示请求成功

采集多页数据内容: 分析请求url的参数变化规律

“”"

顾头不顾尾, 包含1, 但是不包含251

for page in range(26, 251):print(f'=====================正在采集第{page}页的数据内容=====================')

确定请求链接 f 字符串格式化方法, 把page传入到 url 这个字符串中间

伪装模拟 字典数据类型, 构建完整键值对

   源码、解答加企鹅裙:261823976##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'}

发送请求

调用requests模块里面get请求方法, 对于url地址发送请求, 并且携带上headers请求头伪装, 最后用自定义变量名response接收返回数据

    response = requests.get(url=url, headers=headers)

“”"

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

    开发者工具: response <网页源代码>

    response --> <Response [200]>

    text --> 文本

    response.text: 获取响应文本数据, 网页源代码

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

  • 图片标题

  • 图片链接

正则表达式re

re模块findall方法 找到所有数据

re.findall(‘匹配什么数据’, ‘什么地方’)

“”"

    img_info = re.findall('<img class="ui image lazy" data-original="(.*?)" src=".*?" title="(.*?)" ', response.text)

for循环遍历, 把列表里面元素 一个一个提取出来

    for img_url, img_name in img_info:# img_info <列表: 箱子盒子> img_url, img_name <箱子里面东西>print(img_url, img_name)

“”"

  1. 保存数据: 发送请求, 获取二进制数据内容

    response.content 获取二进制数据

    保存 音频/视频/图片/特定格式文件<PDF, zip…>

“”"

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

自动创建文件夹 \ 转义字符串, 把含有特殊含义字符, 转义成除了本身以外不含有其他特殊含义

        filename = 'data\\'

判断是否存在这个文件

        if not os.path.exists(filename):

自动创建文件夹

            os.mkdir(filename)

根据图片自己的后缀

        img = img_url.split('.')[-1]

替换特殊字符

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

len() 统计元素个数

        if len(new_name) > 20:new_name = new_name[:10]
        """OSError: [Errno 22] Invalid argument: 'data\\这盒里吗?.gif'含有特殊字符"""with open(filename + new_name + '.' + img, mode='wb') as f:# 写入数据f.write(img_content)

尾语

感谢你观看我的文章呐~本次航班到这里就结束啦

Python入门小案例: 采集全网表情包图片相关推荐

  1. Python入门——一个沙雕的表情包

    源码 #coding= utf-8 from turtle import* def draw_line():left(60)forward(100)left(150)penup()forward(5) ...

  2. 微信小程序:热门表情包+头像+壁纸自动采集多分类微信小程序

    这是一款自动采集的一款微信小程序源码 内由表情包,头像,还有壁纸组合而成的一款图片小程序 每一个都自带多种分类,内容丰富运营适合 另外支持插屏广告,激励视频广告,等多种广告 小程序源码下载地址: 微信 ...

  3. python全网表情包_Python爬虫爬取最右公众号表情包资源

    某天上厕所刷手机,看到最右公众号里面有一个表情包资源合集 点进去发现有70多期表情包,突然就想到了最近学的爬虫,立马跑回去打开电脑准备看能不能全部爬下来. 我的想法是先找到这70多期的url链接,然后 ...

  4. axios vue 回调函数_Vue 02 —— Vue 入门小案例~使用 Axios 中的GET、POST请求

    作为后端攻城狮,写前端代码是一种什么体验? 相信不少人和 @Python大星 一样,有写过前端代码的经历. 记录一下,Vue 框架开发中"啼笑皆非"的故事,非专业前端人员,该案例无 ...

  5. python之scrapy实战爬取表情包

    python之scrapy实战爬取表情包 前言:在之前我们学习了scrapy框架的基本使用,今天我们通过实战(爬取http://www.doutula.com的套图)来更加了解scrapy框架额使用, ...

  6. spring boot入门小案例

    spring boot 入门小案例搭建 (1) 在Eclipse中新建一个maven project项目,目录结构如下所示: cn.com.rxyb中存放spring boot的启动类,applica ...

  7. Python项目实战:爬取斗图网表情包图片

    2019独角兽企业重金招聘Python工程师标准>>> 前言 相信大家在和别人聊天的时候都很喜欢斗图吧,斗着斗着斗忘记睡觉了,哈哈,感情得到了升华,下面来介绍一个利用Python在斗 ...

  8. 聊天没有表情包被嘲讽,程序员直接用python爬取了十万张表情包

    聊天没有表情包被嘲讽,程序员直接用python爬取了十万张表情包 前言 分析页面 具体实现 解析页面 获取网页内容 解析网页内容 文件下载 多线程下载 成果 总结 前言 事情要从几天前说起,我有一个朋 ...

  9. JavaWeb:shiro入门小案例

    学习原因:刚接触Javaweb的时候懂的很少(当然现在也不多),所以开发一个小项目都是自己从头写到尾,从登录界面一直到数据库,当时想以后开发要是都这么写那不是很枯燥?!-知道后来团队开发,接触的开发人 ...

最新文章

  1. MFCC特征参数提取(一)(基于MATLAB和Python实现)
  2. Android NDK JNI 简单例子1 : Android NDK配置和下载
  3. 总结调试过程中怎么去抓log
  4. 重磅开源人工智能大型场景草图数据集图像检索草图着色编辑和字幕
  5. 160个Crackme040
  6. kotlin将对象转换为map_在 Kotlin 的 data class 中使用 MapStruct
  7. 查找unity工程代码中中文字符
  8. springboot 单测加入参数_Spring Boot集成Elasticsearch实战分享
  9. matlab 排序点,matlab如何进行排序?
  10. android按钮点击无响应时间,AndroidStudio下的点击事件不响应
  11. threading模块的使用
  12. 分类数据显示功能_缓存优化
  13. SDAutoLayout 一行代码搞定自动布局
  14. 思想是精神的种子,改造自己的内心世界
  15. 推荐几款国产快速启动工具软件 总有一款适合你的
  16. 用MATLAB实现人脸识别
  17. 用Proj.4进行坐标系转换(以北京54坐标系转WGS84投影坐标系为例)
  18. 数据分析|WordCloud PCA K-means - 「某电商平台」电脑评论分析
  19. Android Studio高级使用技巧
  20. WP网站主页备案号存放代码

热门文章

  1. element 的 el-form (禁止页面刷新与from验证 vue3)
  2. pywinauto使用笔记
  3. 【Mongo】MongoDB文档查询
  4. 学完网络安全,有哪些职业发展方向
  5. 一条mysql语句是事务吗_mysql中事务
  6. 1321_一份BootLoader xmodem部分的协议分析
  7. PCIe信号简单介绍与测试
  8. 《马达加斯加的企鹅》:好莱坞萌宠养成记
  9. LITS数据集预处理(二)
  10. js中(双感叹号)符号的用法解读