栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

斗图会输?不存在的

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

斗图会输?不存在的

快速下载大量表情包,告别斗图白痴时代。

前言:

本文非常浅显易懂,可以说是零基础也可快速掌握。如有疑问,欢迎留言,笔者会第一时间回复。本文代码存于github

一、分析表情包网址


1、进入斗图啦网址,点击**“最新表情”**,再点击第二、第三页,得出规律如下:

第一页:https://www.doutula.com/photo/list/?page=2
第三页:https://www.doutula.com/photo/list/?page=3
第四页:https://www.doutula.com/photo/list/?page=4

可以看出,page 的值跟点击的页数有关,因此,我们就拿到了要爬取的 url

2、打开检查元素,可以看到html源码

可以看出,每一页的图片都在 div 标签里面,然后每一个 a 标签包含一个图片,


我们要取到表情包,就是要取得 a 标签包含的图片 url,我们可以利用 xpath 语法。

二、实践

a、获取 img 标签取到的 img 有 gif 的信息,我们需要过滤掉
imgs = html.xpath("//div[#class='page-content text-center'//img[@class != 'gif']")

b、接下来是获取图片的 url,上面的代码如下:

    for img in imgs:
 # print(etree.tostring(img))
 img_url = img.get('data-original')  # 不知道为什么多个 !data ,去掉它
 img_url = img_url.replace("!dta", "")

c、截取后缀,得到文件名,并保存

 alt = img.get('alt') # 获取图片名字
 # alt 可能某些情况下需要处理非法字符(这些字符不可以当做名字保存)
 suffix = os.path.splitext(img_url)[1] # 对url进行分割,取数组中的第二位,得到后缀名
 filename = alt + suffix
 request.urlretrieve(img_url, 'images/' + filename) # 保存图片

这样下来,就已经可以快速保存你所需要的表情包了,论斗图,谁比得过你

全部代码如下:

def parse_page(url):

    headers = {
 'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
    }
    response = requests.get(url, headers=headers)
    # print(response.text) # 打印html源代码
    html = etree.HTML(response.text)
    imgs = html.xpath("//div[@class='page-content text-center']//img[@class!='gif']")
    for img in imgs:
 # print(etree.tostring(img))
 img_url = img.get('data-original')  # 不知道为什么多个 !data ,去掉它
 img_url = img_url.replace("!dta", "")
 # print(img_url)
 alt = img.get('alt') # 获取图片名字
 # alt 可能某些情况下需要处理非法字符(这些字符不可以当做名字保存)
 print(alt)
 suffix = os.path.splitext(img_url)[1] # 对url进行分割,取数组中的第二位,得到后缀名
 filename = alt + suffix
 print(filename)
 request.urlretrieve(img_url, 'images/' + filename) # 保存图片

def main():
    for x in range(1,51): # # 爬取前50页 range(1,3) 这里相当于 1 2
 url = 'https://www.doutula.com/photo/list/?page=%d' % x
 parse_page(url)
 break

最终结果:

区区20几行代码,就可以造就一个斗图西方求败的你,赶快来行动吧!

当然,还可以更高级一点,就是利用多线程,异步进行爬取、下载,几秒钟就可以下载到上千张的表情包!相关代码,我也放到了 github ,需要的朋友自行去look look!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/239720.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号