网站地址 : 热门表情_发表情,表情包大全fabiaoqing.com
爬取思路: 通过开发者工具找到包含页面表情包的数据包 通过re parsel css等解析提取数据
爬取步骤:
一. 请求数据 模拟浏览器向服务器发送请求
打开F12 or 右击开发者模式
Ctrl+F 打开搜索框 输入要找寻的数据 找到服务器返回的数据包
将标头中的url地址复制过来 其实也就是浏览器框里的地址
python">#导包
import requestsurl = 'https://fabiaoqing.com/biaoqing/lists/page/3.html'
# 服务器返回的数据 response响应体对象
# 此网站没有反爬机制不需要添加请求头就可以请求到数据
resp = requests.get(url)print(resp.text)
Ctrl+F 确认数据是否正确
二. 提取数据 提取我们想要的数据
表情包的名称和地址
提取方式:
- re 正则表达式 能够从文本中提取数据
- xpath 路径提取器 从xml 或者是 html 中根据路径提取数据
- css 选择器 能够从html中选择标签 语法和前端的css语法相同
- parsel 从HTML和XML文档中提取数据的Python库,它依赖于lxml解析器,并且提供了类似于jQuery的选择器语法 也是scrapy的组件 可以使用css 和 xpath 语法提取数据
本案例采用parsel模块进行解析
提取img标签中的data-original 属性
python">import parsel
# 服务器返回的数据 response响应体对象
resp = requests.get(url)
# 实例化 Selector对象
selector = parsel.Selector(resp.text)
# 使用对应的语法进行提取
gif_url = selector.css('.tagbqppdiv a')
#定义一个变量 方便保存图片
num = 1
for i in gif_url:src = ''.join(i.css('img::attr(data-original)').getall()[0])# 将地址进行切割 取到每个图片的后缀名 jpg gifend = src.split('.')[-1]
三. 保存数据 将图片保存到本地
python">#向图片地址发送请求 获取二进制的数据 音乐 电影 图片视频都是以二进制形式保存
content = requests.get(url=src).content
# 以二进制写入文件 在当前代码目录中 新建一个img文件夹 或使用os模块自动创建都可以
with open('img\\'+str(num)+'.'+f'{end}','wb') as f:f.write(content)
num+=1
运行代码
想要看到下载进度的可以下载 tqdm 模块
导包 from tqdm import tqdm 在for 循坏遍历时加上 for i in tqdm(gif_url)即可 os:操作文件目录模块 import os 内置模块 if not os.path.exists('img\\'):os.mkdir('img\\')
Explain:
此网站复制图片的地址在浏览器打开是打开不了的,但可以进行正常的保存
到此一页的表情包采集完毕
多页采集需改变page页码即可 多页采集嵌套for 循坏
python">for page in range(1,6):url = f'https://fabiaoqing.com/biaoqing/lists/page/{page}.html'
本次的案例分享到此结束 感谢大家的观看 您的点赞和关注是我跟新的动力 谢谢