Python爬虫:抓取表情包的下载链接

Python爬虫:抓取表情包的下载链接

        • [1. 前言](#1. 前言)
        • [2. 具体实现](#2. 具体实现)
        • [3. 实现代码](#3. 实现代码)

1. 前言

最近发现了一个提供表情包的网址,觉得上面的内容不错,于是就考虑用Python爬虫获取上面表情包的下载链接。整体而言,实现这个挺简单的,就是找到提供表情包json数据的api接口即可,接口中没有任何加密操作。网址为:表情包

2. 具体实现

还是通过搜索功能,找到匹配搜索词的相关表情包,如下:

可以发现,当向下滑动滚动条时,表情包数据进行动态刷新增加,由此可以判定这个界面的表情包数据是通过请求api接口,然后一些js操作实现的。直接使用requests模块访问当前界面,你是无法访问到这个表情包数据的。实现上的确是这样,打开开发者工具,来到网络下的Fetch/XHR,可以找到一个api接口链接,打开这个接口,那里面有我们想要的表情包数据。

这个接口链接为:https://www.dbbqb.com/api/search/json?start=0\&w=龙王,明显这个w后的参数值应该就是我们搜索的词进行的编码操作。

至于start后的参数值,应该用于分页的操作,通过向下滑动滚动条,发现这个参数值初始为0,第二页为100,第三页为200,。。。。。。

至于这个接口中的数据,的确是图片的下载链接,如下:

3. 实现代码

实现代码仅仅把这些表情包的下载链接获取到,至于怎样下载,读者自行操作。可以考虑使用

python 复制代码
from urllib import request


url = 'https://image.dbbqb.com/202308120759/a94be64f09fb4528ed75039698d47321/NEN22'
request.urlretrieve(url=url,filename='龙王.png')

或者

python 复制代码
import requests


url = 'https://image.dbbqb.com/202308120759/a94be64f09fb4528ed75039698d47321/NEN22'
rsp = requests.get(url=url)
with open(file='龙王2.png',mode='wb') as f:
    f.write(rsp.content)

参考代码如下:

python 复制代码
import requests
import json
from urllib import parse
from crawlers.userAgent import useragent

keyword = input('搜索关键词:')
pages = input('页数:')
u = useragent()
# pages
url2 = 'https://image.dbbqb.com/'
encode_kw = parse.quote(keyword)
print(encode_kw)
for i in range(int(pages)):
    url = f'https://www.dbbqb.com/api/search/json?start={i*100}&w={encode_kw}'
    print(f'第{i + 1}页->url:{url}')
    headers = {
        'user-agent':u.getUserAgent(),
        "Accept":"application/json",
        "Cache-Control":"no-cache",
        "Connection":"keep-alive",
        "Content-Type":"application/json",
        "Cookie":"Hm_lvt_7d2469592a25c577fe82de8e71a5ae60=1690285252,1690367974,1690963288,1691797900; Hm_lpvt_7d2469592a25c577fe82de8e71a5ae60=1691798363",
        "sec-ch-ua":";Not A Brand;v=99, Chromium;v=94",
        "sec-ch-ua-mobile":"?0",
        "sec-ch-ua-platform":"Windows",
        "Sec-Fetch-Dest":"empty",
        "Sec-Fetch-Mode":"cors",
        "Sec-Fetch-Site":"same-origin",
        "Web-Agent":"web",
    }
    rsp = requests.get(url=url,headers=headers)
    arr = json.loads(rsp.text)
    for e in arr:
        download_url = url2 + e['path']
        print(download_url)

运行结果:

上述内容仅学习使用,不能用于商业活动,希望读者切记。

相关推荐
Yaml435 分钟前
Spring Boot 与 Vue 共筑二手书籍交易卓越平台
java·spring boot·后端·mysql·spring·vue·二手书籍
小小小妮子~37 分钟前
Spring Boot详解:从入门到精通
java·spring boot·后端
hong16168838 分钟前
Spring Boot中实现多数据源连接和切换的方案
java·spring boot·后端
阡之尘埃40 分钟前
Python数据分析案例61——信贷风控评分卡模型(A卡)(scorecardpy 全面解析)
人工智能·python·机器学习·数据分析·智能风控·信贷风控
aloha_7891 小时前
从零记录搭建一个干净的mybatis环境
java·笔记·spring·spring cloud·maven·mybatis·springboot
记录成长java2 小时前
ServletContext,Cookie,HttpSession的使用
java·开发语言·servlet
睡觉谁叫~~~2 小时前
一文解秘Rust如何与Java互操作
java·开发语言·后端·rust
程序媛小果2 小时前
基于java+SpringBoot+Vue的旅游管理系统设计与实现
java·vue.js·spring boot
小屁孩大帅-杨一凡3 小时前
java后端请求想接收多个对象入参的数据
java·开发语言
java1234_小锋3 小时前
使用 RabbitMQ 有什么好处?
java·开发语言