You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python Flask中实现LibGen下载链接的可点击超链接展示?

问题

我通过LibGen API编写了以下Python Flask后端代码来获取下载链接:

@app.route("/api/default")
def titleSearch():
    title = request.args.get('query')

    
    s = LibgenSearch()
    results = s.search_title(title)
    item_to_download = results[0]
    download_links = s.resolve_download_links(item_to_download)
    return render_template(
        "results.html", results=results, download_links=download_links, title=title,
    )

对应的前端results.html代码如下:

<!DOCTYPE html>
<html lang="en">

<head>


<meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>SUSBOOKS</title>
     
    <link rel="stylesheet" href="{{ url_for('static', filename='bootstrap.min.css') }}" />
    <link rel="stylesheet" href="{{ url_for('static', filename='mdb.dark.min.css') }}" />
    <link rel="stylesheet" href="{{ url_for('static', filename='all.min.css') }}" />
    
    <style>
      body {
  background-color:#000000 ;
      }

</style>
  
</head>
<body>
    <p>{{download_links}}</p>

</body>

当前download_links在页面上输出为拼接的字典格式内容:

{'GET': 'http://62.182.86.140/main/265000/ef7a3a2ecf51fa41f621f4e8b17df828/%28Saddleback%27s%20Focus%20on%20Reading%20Study%20Guides%29%20Lisa%20Mccarty%20-%20To%20Kill%20a%20Mockingbird-Saddleback%20Educational%20Publishing%2C%20Inc.%20%282006%29.pdf', 'Cloudflare': 'https://cloudflare-ipfs.com/ipfs/bafykbzacebtnktd2zpvrcygswfcsr6wfft6jjyes6qi7f4mmottq3lebrgpsc?filename=%28Saddleback%27s%20Focus%20on%20Reading%20Study%20Guides%29%20Lisa%20Mccarty%20-%20To%20Kill%20a%20Mockingbird-Saddleback%20Educational%20Publishing%2C%20Inc.%20%282006%29.pdf', 'IPFS.io': 'https://ipfs.io/ipfs/bafykbzacebtnktd2zpvrcygswfcsr6wfft6jjyes6qi7f4mmottq3lebrgpsc?filename=%28Saddleback%27s%20Focus%20on%20Reading%20Study%20Guides%29%20Lisa%20Mccarty%20-%20To%20Kill%20a%20Mockingbird-Saddleback%20Educational%20Publishing%2C%20Inc.%20%282006%29.pdf'}{'GET': 'http://62.182.86.140/main/265000/ef7a3a2ecf51fa41f621f4e8b17df828/%28Saddleback%27s%20Focus%20on%20Reading%20Study%20Guides%29%20Lisa%20Mccarty%20-%20To%20Kill%20a%20Mockingbird-Saddleback%20Educational%20Publishing%2C%20Inc.%20%282006%29.pdf', 'Cloudflare': 'https://cloudflare-ipfs.com/ipfs/bafykbzacebtnktd2zpvrcygswfcsr6wfft6jjyes6qi7f4mmottq3lebrgpsc?filename=%28Saddleback%27s%20Focus%20on%20Reading%20Study%20Guides%29%20Lisa%20Mccarty%20-%20To%20Kill%20a%20Mockingbird-Saddleback%20Educational%20Publishing%2C%20Inc.%20%282006%29.pdf', 'IPFS.io': 'https://ipfs.io/ipfs/bafykbzacebtnktd2zpvrcygswfcsr6wfft6jjyes6qi7f4mmottq3lebrgpsc?filename=%28Saddleback%27s%20Focus%20on%20Reading%20Study%20Guides%29%20Lisa%20Mccarty%20-%20To%20Kill%20a%20Mockingbird-Saddleback%20Educational%20Publishing%2C%20Inc.%20%282006%29.pdf'}

需要修改代码让页面仅输出可点击的超链接,用户能直接点击下载。


解决方案

1. 修改前端模板(results.html)

只需替换页面中渲染download_links的代码,利用Jinja2模板的循环语法遍历字典中的键值对,生成可点击的超链接:

把原来<body>标签内的<p>{{download_links}}</p>替换为以下代码:

<div class="container mt-4">
    <h3 class="text-white mb-3">可用下载链接</h3>
    {% for provider, url in download_links.items() %}
        <a href="{{ url }}" target="_blank" download class="btn btn-success m-2">
            👉 从 {{ provider }} 下载
        </a>
    {% endfor %}
</div>
  • target="_blank":点击链接时在新窗口打开,避免当前页面跳转
  • download属性:触发浏览器的下载行为(部分链接可能因服务器设置无法强制下载,但会尽可能触发)
  • 结合你引入的Bootstrap样式,用btn类让链接显示为按钮样式,提升体验

2. 排查重复输出问题(可选)

从你给出的输出看,页面上重复渲染了两次相同的download_links字典,可能是模板中不小心重复调用了渲染代码,或者后端逻辑有误。可以检查:

  • 前端模板中是否有多处渲染download_links的代码
  • 后端代码是否重复返回了download_links数据

内容的提问来源于stack exchange,提问作者Samurai6465

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 17:30:57