文章目录
一、写在前面
- 一、写在前面
- 二、步骤解析
- 三、效果展示
从老马的两大聊天软件,到其它的各种软件,表情包一直都是中国互联网用户的「心头好」,时至今日,表情包已然成为必不可少的聊天方式。
无论是正事儿还是闲侃,表情包都必不可少,要是聊着聊着发现没得表情包了,多尴尬~
所以它来了,Python批量爬取网络表情包,只要是网上有的,全部都爬下来保存。
二、步骤解析导入模块
import requests # 数据请求模块
import parsel # 数据解析模块
import re # 正则表达式
替换特殊字符
def change_title(title):
mode = re.compile(r'[\\\/\:\*\?\"\\|]')
new_title = re.sub(mode, '_', title)
return new_title
发送请求
def get_response(html_url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36',
}
response = requests.get(url=html_url, headers=headers)
return response
保存数据
def save(name, title, img_url):
img_content = get_response(img_url).content
with open('img\\' + title + '.' + name, mode='wb') as f:
f.write(img_content)
print('正在保存:', title)
主函数
def main(html_url):
html_data = get_response(html_url).text
selector = parsel.Selector(html_data)
divs = selector.css('#container div.tagbqppdiv')
for div in divs:
title = div.css('img::attr(title)').get()
img_url = div.css('img::attr(data-original)').get()
name = img_url.split('.')[-1]
new_title = change_title(title)
if len(new_title) > 255:
new_title = new_title[:10]
save(name, new_title, img_url)
else:
save(name, new_title, img_url)
函数入口 启动 多线程
if __name__ == '__main__':
start_time = time.time()
exe = concurrent.futures.ThreadPoolExecutor(max_workers=7)
for page in range(1, 11):
url = f'https://www.fabiaoqing.com/biaoqing/lists/page/{page}.html'
exe.submit(main, url)
exe.shutdown()
use_time = int(time.time()) - int(start_time)
print(f'总计耗时:{use_time}秒')
三、效果展示
爬取过程 保存结果
兄弟们,代码我都直接给你们了,看完点个赞转发一下呗~