
确定目标网站并分析
目标网站
斗图啦: 链接https://www.doutula.com/
这个网站也是我聊天斗图时常用的网站之一
毕竟不太会说话,只能发图了
分析
打开网站,搜索关键词<狗头>,
发现url变成
https://www.doutula.com/search?keyword=狗头
然后F12打开开发人员工具
发现图片链接就放在标签下面
好家伙,这个竟如此简单,那就直接放代码吧
代码
import os
import re
import time
import requests
#获取表情包对应的url列表
def get_imglist(key,num):
url = 'https://www.doutula.com/search?keyword={}'.format(key)
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'
}
res = requests.get(url=url, headers=headers)
img_urllist = re.findall('data-original="(.*?)"', res.text)
if num>len(img_urllist)or num<0:
num = len(img_urllist)
return img_urllist[0:num]
#创建保存表情包的文件夹
def createpath(path):
print('\r正在创建下载路径', end="")
if not os.path.exists(path):
os.mkdir(path)
#下载表情包
def save_img(key,path,urllist):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'
}
i = 0
print('\r2s后将开始下载{}表情包'.format(key), end="")
time.sleep(2)
for u in urllist:
i += 1
name = path + '/' + u[-25:]
try:
r = requests.get(url=u, headers=headers)
with open(name, 'wb') as f:
f.write(r.content)
print('\r下载进度:' + "{:3}%".format(int(100 * i / len(urllist))), end="")
except:
print('\r{}下载失败'.format(name), end="")
if __name__=='__main__':
key = input('输入表情包关键词(中文):')
try:
num = int(input('输入要爬取的张数(默认10张):'))
except:
num = 10
path = './{}表情包下载'.format(key)
createpath(path)
urllist = get_imglist(key, num)
save_img(key, path, urllist)