为了账号安全,请及时绑定邮箱和手机立即绑定

自从学会了python,斗图就没怕过谁!!

标签:
Python 爬虫

大家好,我是才哥。

今天我们介绍一个简单爬虫程序,关于斗图的!!

斗图嘛

只想说,从此以后,斗图就不用怕谁了!!

来,开

干

那我们就按照顺序来吧,先导入需要用到的库:

import requests
import re
import os
复制代码

等等,你这个导入库没在正文目录下面啊!

没事,接下来我们开始表演就行!

请开始你的表演

一. 找到页面url规律

这里我们要爬取的网站是斗图啦https://www.doutula.com/

  1. 打开网站
  2. 我们先F12打开开发者模式
  3. 在右侧搜索框输入关键词
  4. 点击搜索
  5. 在搜索结果页面下滑,找到 查看更多
  6. 点击查看更多(这个时候请注意浏览器地址栏url变化)
  7. 于是,你发现了它的规律
# 页面变化项是 keyword 和 page,分别对应的搜索关键词和搜索结果页码
url = f'https://www.doutula.com/search?type=photo&more=1&keyword={keyword}&page={page}'
复制代码

url

是不是很开心?!

开心你就蹦一蹦~~

开心

二. 请求搜索结果数据

我们还是直接用requests库进行数据请求即可,这里需要注意的是 需要加上带浏览器的请求头,否则会收到404的错误码!

由于这里我用到re正则表达式进行数据解析,所以,可以先将请求的文本数据中非字符部分去掉,具体看下面代码就好啦。

headers = {
    "Accept-Encoding": "Gzip",  # 使用gzip压缩传输数据让访问更快
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0",
    }

# 搜索页面数据
def get_text(keyword,page):
    url = f'https://www.doutula.com/search?type=photo&more=1&keyword={keyword}&page={page}'
    # 请求数据
    resp = requests.get(url,headers=headers)
    # 去掉非字符
    text = re.sub('\s','',resp.text)
    
    return text
复制代码

是不是觉得很简单,很不错!!

不错哟

三. 解析并下载表情包

我们直接在页面开发者模式下,element元素找到某个表情包,然后在右侧可以看到该表情包所在节点区域,找啊找啊,就找到了表情包的图片地址。

页面

找到了表情包图片地址后,我们直接用正则表达式解析出他们进行处理就好啦。

为了处理的准确性,这里可以先正则解析出页面中全部表情所在区域,然后再在这个区域里解析每个表情包的图片地址,接着遍历全部的表情包地址进行图片下载

需要注意的是,我这边想将不同关键词搜索结果下的表情包存在不同关键词文件夹里,所以用到了os.mkdir创建关键词文件夹的方式,当然在创建前也需要现判断是否已经存在os.path.exists

直接看代码吧!!

# 表情包下载
def down_meme(keyword):
    # 由于表情较多,这里只取10页(也有接近700左右)
    pages = 10
    num = 0
    for page in range(1,pages+1):
        text = get_text(keyword,page)
        # 表情包区域
        search_result = re.findall(r'divclass="search-resultlist-group-item"(.*?)class="text-center"',text)[0]
        # 表情包下载地址
        meme_urls = re.findall(r'"data-original="(.*?)"',search_result)
        
        
        # 下载每页的表情包
        for meme_url in meme_urls:
            num += 1
            # 表情包文件名
            meme_name = re.findall(r'http://img.doutula.com/.*/(.*)',meme_url)[0]
            meme_img = requests.get(meme_url)
            # 表情包内容 bytes 格式
            meme = meme_img.content
            # 写入本地(判断关键字文件夹是不是存在,不存在则创建一个)
            if not os.path.exists(f'./{keyword}'):
                os.mkdir(f'./{keyword}')
                
            with open(f'./{keyword}/{meme_name}','wb') as f:
                f.write(meme)
                
            print(f'{num} 个 {keyword} 表情包已经下载...')
复制代码

是不是很简单,很牛逼??

牛逼?

四.代码跑起来,表情包斗起来!

最后,我们就可以进行表情包的自定义下载啦!

记得加上以下代码:

if __name__ == "__main__":
    # keyword = '呵呵'
    keyword =  input('请输入你想查询的表情包:')
    down_meme(keyword)
复制代码

代码运行起来,666表情包刷起来!!!

表情包下载

五.斗图吧

如果你在pc端微信,则直接将下载的表情包拖进对话框就行;如果你是手机的话,将文件导入手机,然后以照片形式发送亦可!

请开启你的斗图模式!!

斗图

以上就是本次全部内容,简单粗暴有没有!!

简单粗暴

还等什么,斗图去吧!

作者:哈哈儿天才
链接:https://juejin.cn/post/6959136187143421966
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消