爬取海量表情包,让你表情包仓库持续更新,成为群里的图王(附代码)
程序员文章站
2022-07-01 15:51:53
前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 看到小伙伴一张又一张不知道从何而来的表情包是不是有点羡慕? 今天小编就带大家,使用python爬取网站表情包,打造一个自己的表情包图库,让大家斗图从此永无败绩 知识点: re ......
前言
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
看到小伙伴一张又一张不知道从何而来的表情包是不是有点羡慕?
今天小编就带大家,使用python爬取网站表情包,打造一个自己的表情包图库,让大家斗图从此永无败绩
知识点:
requests 的简单使用
css选择器的简单使用
os模块操作文件夹
文件保存
开发环境:
1.python环境:annaconda5.2.0(python3.6.5)
2.编辑器:pycharm
分析:
f12检查来获取图片在源代码的位置
每一次请求的url参数,几乎都一样,只有一个参数是不同的,那就是pn,它指的是当前页面中已经展示的图片数目。
我们所需要的信息都已经找到,那么开始编写代码吧
代码如下:
import requests import parsel #pip install parsel import os import concurrent.futures headers = { 'user-agent': 'mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/73.0.3683.86 safari/537.36' } def get_image_url(url): #url = 'https://www.fabiaoqing.com/bqb/lists/type/hot/page/1.html' # 发送网络请求获取网业数据 response = requests.get(url, headers=headers) html = response.text # 对数据进行筛选 sel = parsel.selector(html) image_links = sel.css('a.bqba::attr(href)').getall() return image_links def get_image_info(url): # url = 'https://www.fabiaoqing.com/bqb/detail/id/53912.html' response = requests.get(url, headers=headers) html = response.text sel = parsel.selector(html) image_url_list = sel.css('img.bqbppdetail.lazy::attr(data-original)').getall() folder_name = sel.css('h1.ui.header::text').re('\w+')[0] print('正在下载\t{}\t表情包系列'.format(folder_name)) return folder_name, image_url_list def save(folder_name, image_url_list): for url in image_url_list: folder_path = '表情包/{}'.format(folder_name) if not os.path.exists(folder_path): os.mkdir(folder_path) image_name = url.split('/')[-1] file_path = folder_path + '/' + image_name with open(file_path, mode='wb') as f: f.write(requests.get(url, headers=headers).content) def download_image(page_num): url_links = get_image_url('https://www.fabiaoqing.com/bqb/lists/type/hot/page/{}.html'.format(page_num)) for url_link in url_links: url_link = 'https://www.fabiaoqing.com' + url_link folder_name, image_url_list = get_image_info(url_link) save(folder_name, image_url_list) if __name__ == '__main__': thread_pool = concurrent.futures.threadpoolexecutor(max_workers=100) for i in range(1, 1041): thread_pool.submit(download_image, i) thread_pool.shutdown()
最终效果图:
今天也是闲的无聊,看到好多沙雕图,就想爬下来,心情一好就爬了100页哈哈~面对五千多张表情包我也是很快乐的~
ps:如果你处于想学python或者正在学习python,python的教程不少了吧,但是是最新的吗?说不定你学了可能是两年前人家就学过的内容,在这小编分享一波2020最新的python教程。获取方式,私信小编 “ 资料 ”,即可免费获取哦!
下一篇: 在Asp.net中为图像加入水印信息