聊天没有表情包被嘲讽,程序员直接用python爬取了十万张表情包[通俗易懂]
表情,聊天,没有,包被,嘲讽,程序员,直接,python,爬取,十万,通俗易懂
2025-03-25 08:59:26 时间
大家好,又见面了,我是你们的朋友全栈君。
聊天没有表情包被嘲讽,程序员直接用python爬取了十万张表情包
前言
事情要从几天前说起,我有一个朋友,他在和他喜欢的小姐姐聊天时,聊天的气氛一直非常尬,这时他就想发点表情包来缓和一下气氛,但一看自己的表情包收藏都是这样的。。。
。。。这发过去,基本就直接和小姐姐说拜拜了,然后他就向我求救问我有没有表情包,表情包我是没有,但网站有呀,来来,爬虫整起。
分析页面
今天爬取的网站是斗图吧,有一说一表情包是真的多,看这惊人的页数
接下来就该看看怎么拿到表情包图片的url了,首先打开谷歌浏览器,然后点F12进入爬虫快乐模式
然后完成下图的操作,先点击1号箭头,然后再选中一个表情包即可,红色框中就是我们要爬取的对象,其中表情包的src就在里面
现在我们就搞清楚了怎么拿到表情包的url了,就开始写代码了
具体实现
解析页面
获取网页内容
这里就是获取爬取网页的信息
def askURL(url):
head = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36"
}
req = urllib.request.Request(url=url, headers=head)
html = ""
try:
response = urllib.request.urlopen(req)
html = response.read()
except Exception as result:
print(result)
return html
解析网页内容
# 取出图片src的正则式
imglink = re.compile(
r'<img alt="(.*?)" class="img-responsive lazy image_dta" data-backup=".*?" data-original="(.*?)" referrerpolicy="no-referrer" src=".*?"/>',
re.S)
def getimgsrcs(url):
html = askURL(url)
bs = BeautifulSoup(html, "html.parser")
names = []
srcs = []
# 找到所有的img标签
for item in bs.find_all('img'):
item = str(item)
# 根据上面的正则表达式规则把图片的src以及图片名拿下来
imgsrc = re.findall(imglink, item)
# 这里是因为拿取的img标签可能不是我们想要的,所以匹配正则规则之后可能返回空值,因此判断一下
if (len(imgsrc) != 0):
imgname = ""
if imgsrc[0][0] != '':
imgname = imgsrc[0][0] + '.' + getFileType(imgsrc[0][1])
else:
imgname = getFileName(imgsrc[0][1])
names.append(imgname)
srcs.append(imgsrc[0][1])
return names, srcs
到现在为止,已经拿到了所有的图片的链接和名字,那么就可以开始下载了
文件下载
多线程下载
因为文件实在有点多,所以最好采用多线程的方式下载,我这里只是给了一个样例,大家按照这个逻辑写一下就好
pool = ThreadPoolExecutor(max_workers=50)
for j in range(len(names)):
pool.submit(FileDownload.downloadFile, urls[j], filelocation[j])
成果
总共是爬了十万多张表情包,这次咱也是表情包大户了
总结
很简单的一个爬虫,适合我这样的初学者练练手,如果对爬虫有兴趣的话可以看看我的爬虫专栏的其他文章,说不定也有你喜欢的
有缘再写,侵权立删
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/144081.html原文链接:https://javaforall.cn
相关文章
- python的优缺点
- python lambda拉姆达表达式「建议收藏」
- Python-基础05-字符编码
- Python生成图文并茂的PDF报告
- 使用 python 执行 shell 命令的几种常用方式
- Python中的语法糖甜不甜?
- python之抛出异常(raise语句)「建议收藏」
- X波段双极化相控阵天气雷达基数据的python读取方法
- Python 查找算法_众里寻他千百度,蓦然回首那人却在灯火阑珊处(线性、二分,分块、插值查找算法)
- pythoncharm注释快捷键_JAVA注释快捷键
- Python+Flask实现的学生培养计划管理系统
- 使用Python验证并利用Redis未授权漏洞
- 【InventWithPython 第一部分】校对活动正式启动
- python 变量与数据类型
- python提取xml指定内容
- python换行符使用_python中怎么换行?「建议收藏」
- Python正则表达式,这一篇就够了!
- webstorm占用内存过高_python程序内存不断增加
- Python项目49-用户验证短信接口(可劲撸)
- 卡尔曼滤波算法及其python实现