Python网络爬虫爬取站长素材上的表情包

news/2024/11/29 7:40:51/

由于不经常看群消息,收藏的表情包比较少,每次在群里斗图我都处于下风,最近在中国大学MOOC上学习了嵩天老师的Python网络爬虫与信息提取课程,于是决定写一个爬取网上表情包的网络爬虫。通过搜索发现站长素材上的表情包很是丰富,一共有446页,每页10个表情包,一共是4000多个表情包,近万个表情,我看以后谁还敢给我斗图生气

技术路线

requests+beautifulsoup

网页分析

站长素材第一页表情包是这样的:


可以看到第一页的url是:http://sc.chinaz.com/biaoqing/index.html

点击下方的翻页按钮可以看到第二页的url是:http://sc.chinaz.com/biaoqing/index_2.html

可以推测第446页的url是:http://sc.chinaz.com/biaoqing/index_446.html

接下来是分析每一页表情包列表的源代码:


再来分析每个表清包全部表情对应的网页:



步骤

1、获得每页展示的每个表情包连接和title

2、获得每个表情包的所有表情的链接

3、使用获取到的表情链接获取表情,每个表情包的表情放到一个单独的文件夹中,文件夹的名字是title属性值

代码

#-*-coding:utf-8-*-
'''
Created on 2017年3月18日
@author: lavi
'''
import bs4
from bs4 import BeautifulSoup
import re
import requests
import os
import traceback
'''
获得页面内容
'''
def getHtmlText(url):try:r = requests.get(url,timeout=30)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.textexcept:return ""
'''
获得content
'''    
def getImgContent(url):head = {"user-agent":"Mozilla/5.0"}try:r = requests.get(url,headers=head,timeout=30)print("status_code:"+r.status_code)r.raise_for_status()return r.contentexcept:return None'''
获得页面中的表情的链接
'''    
def getTypeUrlList(html,typeUrlList):soup = BeautifulSoup(html,'html.parser')divs = soup.find_all("div", attrs={"class":"up"})for div in divs:a = div.find("div", attrs={"class":"num_1"}).find("a")title = a.attrs["title"]typeUrl = a.attrs["href"]typeUrlList.append((title,typeUrl))
def getImgUrlList(typeUrlList,imgUrlDict):for tuple in typeUrlList:title = tuple[0]url = tuple[1]title_imgUrlList=[]html = getHtmlText(url)soup = BeautifulSoup(html,"html.parser")#print(soup.prettify())div = soup.find("div", attrs={"class":"img_text"})#print(type(div))imgDiv = div.next_sibling.next_sibling#print(type(imgDiv))imgs = imgDiv.find_all("img");for img in imgs:src = img.attrs["src"]title_imgUrlList.append(src)imgUrlDict[title] = title_imgUrlList
def getImage(imgUrlDict,file_path):head = {"user-agent":"Mozilla/5.0"}countdir = 0for title,imgUrlList in imgUrlDict.items():#print(title+":"+str(imgUrlList))try:dir = file_path+titleif not os.path.exists(dir):os.mkdir(dir)countfile = 0for imgUrl in imgUrlList:path = dir+"/"+imgUrl.split("/")[-1]#print(path)#print(imgUrl)if not os.path.exists(path):r = requests.get(imgUrl,headers=head,timeout=30)r.raise_for_status()with open(path,"wb") as f:f.write(r.content)f.close()countfile = countfile+1print("当前进度文件夹进度{:.2f}%".format(countfile*100/len(imgUrlList)))countdir = countdir + 1print("文件夹进度{:.2f}%".format(countdir*100/len(imgUrlDict)))except:print(traceback.print_exc())#print("from getImage 爬取失败")def main():#害怕磁盘爆满就不获取全部的表情了,只获取30页,大约300个表情包里的表情pages = 30root = "http://sc.chinaz.com/biaoqing/"url = "http://sc.chinaz.com/biaoqing/index.html"file_path = "e://biaoqing/"imgUrlDict = {}typeUrlList = []html = getHtmlText(url);getTypeUrlList(html,typeUrlList)getImgUrlList(typeUrlList,imgUrlDict)getImage(imgUrlDict,file_path)for page in range(pages):url = root + "index_"+str(page)+".html"imgUrlDict = {}typeUrlList = []html = getHtmlText(url);getTypeUrlList(html,typeUrlList)getImgUrlList(typeUrlList,imgUrlDict)getImage(imgUrlDict,file_path)main()
结果



如果你在群里斗图吃了亏,把上面的程序运行一遍。。。不要谢我,3月是学雷锋月。哈哈,来把我们斗会图,


http://www.ppmy.cn/news/642351.html

相关文章

Python玩转emoji表情 一行代码的事儿!

文章目录 一、前言二、安装和使用1. 安装2. 两个函数三、实践四、结语一、前言 如下表情你可能都见过 还记得曾经被 “滑稽” 刷屏的场景吗?

小米手机android_id如何查看,一篇文章看懂如何通过手机上小米社区查Mi ID?

作为小米社区的老用户都知道,早先在老的小米社区App或者电脑版个人主页就可以直接查看到用户的Mi ID.而现在的新版本小米社区无论是App版本或者电脑端都无法再直接地查看到个人或者其他人Mi ID. 本期Flashcer就和大家分享一下2个玩机技巧:1)如何在手机上通过小米社区查Mi ID?…

python恶搞表情包-关于python表情包

广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品。未来,我们一起乘风破浪,创造无限可能。 来源:python开发id:pythonpush作为一个数据分析师,应该信奉一句话----一图胜千言。 不过这里要说的并不是数据可视化,而是一款全民向的产品形态…

全能鼠标连点器之自动点击王软件

软件名称:全能鼠标连点器之自动点击王软件 软件版本:V13.7.6 软件大小:1760kb 软件类型:简体中文/国产软件/免费版 软件分类:鼠标键盘/ 运行环境:2000/XP/2003/Vista/Win7/win8 联 系 人:9470845 E-mail:9470845@qq.com 开 发 商: http://www.mf01…

如何将mp4视频制作成gif表情包

如何将mp4视频制作成gif表情包,我们需要先在手机上安装应用程序“王者剪辑app”,打开应用并进入“gif表情包”功能中, 然后导入视频, 选择需要转为gif表情的视频片段,然后点击界面对勾按钮, 接下来就…

鼠标连点器-全能鼠标连点器软件-游戏生活小帮手

软件名称:鼠标连点器-全能鼠标连点器软件-游戏生活小帮 包含数据采集-刷票-post机-后台鼠标键盘模拟-后前台鼠标键盘模拟等 软件版本:V13.7.4 软件大小:1280kb 软件类型:简体中文/国产软件/免费版 软件分类:网络…

小米手机qq邮箱收件服务器,小米手机无法添加邮箱?是你不会设置而已

原标题:小米手机无法添加邮箱?是你不会设置而已 平时小编很少使用QQ邮箱的,由于日常需要和方便收发邮件,小编第一次在小米手机自带的电子邮箱里面设置QQ邮箱,可是折腾了半天也没能设置成功,一直提示错误&am…

详解20个常见的模拟电路

桥式整流电路 二极管的单向导电性:二极管的PN结加正向电压,处于导通状态;加反向电压,处于截止状态。其伏安特性曲线,如下图。 理想开关模型和恒压降模型:理想模型指的是在二极管正向偏置时,其管…