【爬虫】Yhen手把手教你爬取表情包,让你成为斗图界最靓的仔!

以下内容为本人原创,欢迎大家观看学习,禁止用于商业用途,转载请说明出处,谢谢合作!
·作者:@Yhen
·原文网站:CSDN
·原文链接:https://blog.csdn.net/Yhen1/article/details/105475370

转载请说明此出处,侵权必究!谢谢合作!
  大噶好!我是python练习时长一个月的Yhen,今天要向大家分享的是爬取表情包,让你成为斗图界最靓的仔!,特别感谢六星教育python学院,我就是在这里学的,老师讲的挺好挺仔细的,以下内容都是基于我在课堂上学到的,大家有兴趣可以到腾讯课堂报名听课,都是免费的。

一.思路分析

今天我们的目标是把这个网站中的表情包给爬取下来
url:http://www.bbsnet.com/katong
在这里插入图片描述
我们首先来分析一下
打开我们的网页检查工具,点击左上角的按钮,然后定位到其中的一张表情包

在这里插入图片描述
可以看到,下方给我们反馈的数据中
我们的表情包是在 类选择器(class)为zoom的a标签的下级标签img标签里面的src属性里面(可能有点绕,不过看着下图多读几次应该就能理解了)
图片的格式是gif,就是动图
在这里插入图片描述
那我们有思路了
首先对这个网址发送请求,获取到它里面的数据
然后解析数据,并通过标签类选择器属性提取到我们的图片地址
最后把图片保存到本地即可

那么开始写代码吧

二.代码演示

老规矩,先导包。今天我们还是会用到pyquery这个包,因为这个真的简单又好用啊哈哈哈

import requests
#从pyquery中导入PyQuery ,取别名pq
from pyquery import PyQuery as pq

然后是要获取网页的数据

网址是这个:http://www.bbsnet.com/katong
但是我们的目标是成为斗图界的大佬,只有这么一页的表情包怎么能满足我们呢?所以我们今天的目标是爬取多页表情包

首先我们来看看第二页的url和第一页的有什么不同
在这里插入图片描述
可以看到,第二页比第一页多了个后缀/page/2
那么我们是不是可以通过改变这个数据来改变页数呢?

我把2改成3

在这里插入图片描述

很好,成功得到了我们第3页的数据了

那么我们就可以通过改变这个值来自行决定我们想要的页数了
先看看我是怎么做的

# 自行输入想要的表情包页数,转换为整数格式,并赋值给a
a = int(input("请输入你想要的页数"))
# 由取头不取尾的原则。该循环会生成数值1~a,即我们想要获取的页数
for page in range(1,a+1):
    # 首页的url
    # 用.format把我们要的页码数值代入到网址中
    url ='http://www.bbsnet.com/biaoqingbao/page/{}'.format(page)
    # 请求头
    headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.9 Safari/537.36'}
    # 对首页发送请求
    res = requests.get(url,headers=headers).text
    print(res)

通过上面这种代码,我们就可以想下载多少页就下载多少页了

我们来打印下结果(这里以2页为例)
在这里插入图片描述
成功得到了我们两页的源码

接下来就是从这些源码中提取我们表情包的地址
再来回顾下
在这里插入图片描述
我们的表情包地址是在 类选择器(class)为zoom的a标签的下级标签img标签里面的src属性里面

下面我们就用pyquery把他们取出来

# 通过类选择器zoom定位数据,然后取他的下级标签img
    img =doc(".zoom img")
    print(img)

先通过类选择器zoom定位数据,然后取他的下级标签img
我们看看结果
在这里插入图片描述
得到了很多很多的数据,可以看到我们的图片地址也在这了
但是现在看起来是不是很乱?而且很多我们不要的
没关系,现在我们就让他排好队,并提取出图片地址

# 通过类选择器zoom定位数据,然后取他的下级标签img .item()把数据返回为查询集
    img =doc(".zoom img").items()
    # print(img)
    # 遍历数据
    for x in img:
        # 通过属性“src”提取出图片的地址
        print(x.attr("src"))

我们来看看结果
在这里插入图片描述
成功得到了我们两页的表情包地址啦
我们点开一个网址看看在这里插入图片描述
莫得毛病吧

然后我们对这些表情包发送请求,并保存到本地,就大功告成了

# 设置count的初始值为1
    count=1
    # 遍历数据
    for x in img:
        # 通过属性“src”提取出图片的地址
        img_url =x.attr("src")
        # 对图片地址发送请求
        res =requests.get(img_url,headers=headers)
        # 在同路径下保存为gif文件,以“ab”的方式写入 a是追加 b是进制转换
        f =open("./"+"{}.gif".format(count),"ab")
        # 将获取到的数据写入 content是进制转换
        f.write(res.content)
        # 关闭文件写入
        f.close()
        # 等价于count = 前一个count+1
        count+=1

我们来看看结果

在这里插入图片描述
成功获取了我们两页的数据
大家可以自行输入你想要的页数哦
完成啦

三.往期文章回顾

Yhen带你趣味入门Python①—Windows下Python下载及安装

【python热搜爬虫+定时发送邮件操作①】不会吧不会吧!不会2020了还有人需要用软件看微博热搜吧?

【python微博爬虫+定时发送邮件操作②】不会吧不会吧!不会2020了还有人需要用软件看微博热搜吧?

【爬虫+数据可视化】Yhen手把手带你爬取CSDN博客访问量数据并绘制成柱状图

【爬虫】Yhen手把手带你爬取去哪儿网热门旅游信息(并打包成旅游信息查询小工具

【爬虫】Yhen手把手带你用python爬小说网站,全网打尽,想看就看!(这可能会是你看过最详细的教程)

【实用小技巧】用python自动判断并删除目录下的空文件夹(超优雅)

【爬虫+数据库操作】Yhen手把手带你用pandas将爬取的股票信息存入数据库!

【selenium爬虫】
Yhen手把手带你用selenium自动化爬虫爬取海贼王动漫图片

【爬虫】秀才不出门,天下事尽知。你也能做到!Yhen手把手带你打造每日新闻资讯速达小工具。

【爬虫】Yhen手把手带你用python爬取知乎大佬热门文章

【爬虫】Yhen手把手教你爬取表情包,让你成为斗图界最靓的仔

【前端】学过一天的HTML+CSS后,能做出什么有趣的项目?

  希望大家能够喜欢这篇文章
  如果可以的话,可以点个赞鼓励下嘛?加个关注更好呦!
  我是Yhen,下次见~

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值