前言
(。・∀・)ノ゙嗨 大家好,这里是小圆
聊天没表情包你会有点不习惯的感jio吗 就比如新注册了个qq或者微信再或者企业微信
emmm我就是这样拿到新账号后,跟别人聊聊天想发送表情包 ,结果只能发送软件自带的小表情,区区小表情怎么能满足我啊
想着想着,我就打开了个表情包的网站,一个个下载下来也太麻烦了,下一秒我就打开了我的pycharm
话不多说 ,今天咱们就来扒拉扒拉这个网站吧 👇
暂且来看看 这里的小部分表情包吧
前期准备
环境
- Python 3.8
- Pycharm 2021.2版本
模块
# 导入数据请求模块 --> 第三方模块 需要安装 pip install requests <手机第三方APP 需要自己下载>
import requests
# 导入正则模块 --> 内置模块 不需要安装 <相当于手机自带APP>
import re
# 导入文件操作模块 --> 内置模块 不需要安装
import os
步骤
采集一页数据
-
发送请求, 模拟浏览器对于url地址发送请求
-
获取数据, 获取服务器返回响应数据
开发者工具: response <网页源代码> -
解析数据, 提取我们想要的数据内容
图片标题
图片链接 -
保存数据, 把图片内容保存到本地文件夹
实现代码
1. 发送请求
完整 源码 点击 此处 领取 即可
模拟浏览器对于url地址发送请求
for page in range(26, 251):
print(f'=====================正在采集第{page}页的数据内容=====================')
# 确定请求链接 f 字符串格式化方法, 把page传入到 url 这个字符串中间
url = f'https://fabiaoqing.com/biaoqing/lists/page/{page}.html'
# 伪装模拟 字典数据类型, 构建完整键值对
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'
}
2. 获取数据
获取服务器返回响应数据
开发者工具: response <网页源代码>
response --> <Response [200]>
text --> 文本
response.text: 获取响应文本数据, 网页源代码
3. 解析数据
提取我们想要的数据内容
图片标题
图片链接
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)
4. 保存数据
发送请求, 获取二进制数据内容
response.content 获取二进制数据
保存 音频/视频/图片/特定格式文件<PDF, zip…>
###源码领取 309488165 ###
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)
最后
今天的案例分享到这里就结束啦
对代码有什么疑问 或者报错的 可以点击文末名片进行交流哦