单击 web.py python 中的按钮时下载/导出 csv 文件

2024-02-19

我正在使用Pythonweb.py构建小型网络应用程序的框架。

它由一个

  1. Home page以 url 作为输入
  2. Reads anchor text and anchor tags从中
  3. 将其写入 csv 文件并下载

当我们点击 a 时,就会发生步骤 2 和 3export the links按钮,下面是我的代码

code.py

import web
from web import form
import urlparse
from urlparse import urlparse as ue
import urllib2
from BeautifulSoup import BeautifulSoup
import csv
from cStringIO import StringIO

urls = (
    '/', 'index',
    '/export', 'export',
)

app =  web.application(urls, globals())
render = web.template.render('templates/')

class index:
    def GET(self):
        return render.home()


class export:

    def GET(self):
        i = web.input()
        if i.has_key('url') and i['url'] !='':
            url = i['url'] 
            page = urllib2.urlopen(url)
            html = page.read()
            page.close()


            decoded = ue(url).hostname
            if decoded.startswith('www.'):
                decoded = ".".join(decoded.split('.')[1:])
            file_name = str(decoded.split('.')[0])

            csv_file = StringIO()
            csv_writer = csv.writer(csv_file)
            csv_writer.writerow(['Name', 'Link'])

            soup = BeautifulSoup(html)
            for anchor_tag in soup.findAll('a', href=True):     
                csv_writer.writerow([anchor_tag.text,anchor_tag['href']]) 
            web.header('Content-Type','text/csv')       
            web.header('Content-disposition', 'attachment; filename=%s.csv'%file_name)
            return csv_file.getvalue()

if __name__ == "__main__":
    app.run()

首页.html:

$def with()
<html>
 <head>
   <title>Home Page</title>
 </head>
 <body>
     <form method="GET" action='/export'>
        <input type="text" name="url" maxlength="500" />
        <input class="button" type="submit" name="export the links" value="export the links" />
      </form>
 </body>
</html>

上面的 html 代码显示一个带有文本框的表单,该文本框接受 url ,并有按钮export the links按钮那个downloads/exports带有锚标记链接和文本的 csv 文件。

  1. 例如当我们提交http://www.google.co.in然后单击export the links,所有锚点网址和锚文本都保存到csv文件中并成功下载

  2. 但例如当我们给出其他网址时http://stackoveflow.com立即并单击export the links按钮,csv 文件(如上面代码所示,使用 url 的域名创建)正在使用标签 links 进行下载,但下载的 csv 文件还包含之前 url 的数据(锚文本和链接),即http://www.google.co.in.

也就是说,数据在来自不同网址的同一个 csv 文件中被覆盖,任何人都可以让我知道上面的代码有什么问题(export class)生成 csv 文件,为什么数据被覆盖而不是创建一个动态创建的具有不同名称的新 csv 文件?

最后,我的目的是下载/导出一个新的 csv 文件,其中包含 url 的域名(在我的代码中如上所述进行切片),每次我们给出新 url 时,都会将数据(锚标记文本和 url )从 url 写入其中。

任何人都可以扩展/对我的上述代码进行必要的更改,以下载单个 url 的单个 csv 文件.......


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单击 web.py python 中的按钮时下载/导出 csv 文件 的相关文章

随机推荐

  • 我可以在 Intranet 中访问 ASP.NET 开发服务器吗?

    我正在测试 ASP NEt 站点 当我执行它时 它会启动 ASP NET 开发服务器并打开一个页面 现在我想在我拥有的内网中测试它 我可以使用这台服务器吗 或者我需要在这台机器上配置 IIS 我需要配置一些东西才能让它工作吗 我已将 loc
  • 如何使用位图将图像分享到社交媒体?

    我需要从 RecyclerAdapter 共享图像 因为该图像最初并不存在 即使用适配器在 Activity 中加载 如何将位图分享到社交媒体 每次我在应用程序中单击共享时 都会显示 没有应用程序可以执行此操作 feedItemView s
  • 删除 ToolStripControlHost 周围的空白

    我正在尝试删除 toolstripcontrolhost 控件周围的空白 该控件在上下文菜单中托管日历控件 请参阅附图和代码 VB Dim menuItem As ToolStripMenuItem New ToolStripMenuIte
  • 在 VBA-Selenium 中按 Enter 和向下键

    我想在 vba selenium 中编写一段代码以按 Enter 和向下箭头键 所以你可以帮助我吗 我已经尝试过下面的代码 但它不起作用 selenium keyDownNative 40 For Down Arrow key seleni
  • 如何在Azure VM上推出最新的.net框架?

    我使用 azure 门户创建了一个 Azure VM windows sever 2016 它安装了 net 4 6 2 现在我想在其上推出最新的可用 net 框架 4 7 4 7 1 一种选择是下载所需的框架并将其安装在虚拟机上 我确信应
  • 子进程的 waitpid 未成功

    我正在使用启动一个进程execv并让它写入文件 我同时启动一个线程来监视文件 以便它的大小不超过使用的特定限制stat st size 现在 当达到极限时 我waitpid对于子进程 但这会引发错误 并且我在后台启动的进程变成僵尸进程 当我
  • 同一个表上的内连接和左连接

    我有两个表 A 和 B 其中有两列 x 和 y 我想在 x 上内连接 A 和 B 但只保留 A 列 y 的值 左连接 我正在寻找一种组合两个 y 列的方法 不能只在 select 语句中指定 A y 我怎样才能做到这一点 Example T
  • Knockout.js:更新绑定?

    当我在 ko applyBindings 之后将任何新元素注入 DOM 时被调用 那么淘汰赛将无法识别这些新元素 我可以理解为什么会发生这种情况 它们只是没有被淘汰索引 因此 起初我认为在添加新元素后再次调用 ko applyBinding
  • 深入理解MVC.net中的延迟加载和错误处理

    我试图对以下问题写出完整详细的答案 为什么 Dispose 有效 而不是 using var db new DataContext https stackoverflow com questions 23110719 why does di
  • 为什么 WordPress 被认为编程很差劲? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • .NET 中的 ApplicationException 有何用途?

    为了引发异常 我通常使用内置异常类 例如ArgumentNullException and NotSupportedException 但是 有时我需要使用自定义异常 在这种情况下我会写 class SlippedOnABananaExce
  • 将所有内容都纳入范围内会影响 Angular 性能吗?

    我想知道是否有人对在模块内部使用 scope 与普通 JavaScript 对象有什么建议 例如 我在控制器中有一些变量 为了方便起见 我将它们附加到 scope 但它们可能只是控制器内的常规对象 没有任何功能差异 我的问题是 当 Angu
  • 颠覆和依赖

    我正在尝试为以下问题找到可行的策略 我们有几个依赖于我们框架的网络项目 所有内容都存储在我们的 SVN 中 并拥有自己的项目和所有必要的目录结构 主干 标签 分支 在一个示例中 我们有项目 webprj01 和 webprj02 并且我们有
  • 如何将 routerLinkActive 与空 routerLink 一起使用

    我有以下选项卡栏链接 第一个应该是空的
  • 如何使用 POCO 通过 HTTP 基本身份验证进行 HTTP Post?

    我正在尝试使用 POCO 进行 HTTP 基本身份验证 明文用户名和密码 的 HTTP Post 我找到了一个 Get 的示例并尝试修改它 但作为一个菜鸟 我认为我已经破坏了它的实用性 有人知道怎么做吗 是的 我已经看到了另一个关于此的问题
  • 使用 ctest/cmake 测试非零退出状态

    感兴趣的应用程序是一个编译器 当它在源代码中遇到错误时 它会返回非零退出代码 编译器的单元测试由故意触发错误的小片段组成 用于添加测试的函数是 function add compiler test test name options add
  • 检测 AngularJS 中自定义过滤器何时完成[重复]

    这个问题在这里已经有答案了 我有一个自定义过滤器函数 我正在调用 ng repeat 指令 div app title div 这显然会影响 appList 中每个应用程序的 assetFilter 函数 过滤完成后 我想运行另一个函数 如
  • Spring AOP中代理的使用

    我正在读一本书 其中谈到启用AspectJSpring AOP 的支持 下面是书中的一段话 要在 Spring IoC 容器中启用 AspectJ 注释支持 您只需定义一个空的 bean 配置文件中的 XML 元素 aop aspectj
  • Azure 表存储 API 是否缓存结果?

    当我对 Azure 表存储多次运行相同的查询时 它是否使用缓存并加速后续查询 换句话说 它是否缓存 HTTP 响应 Azure存储肯定使用缓存 http www scribd com doc 73458371 Windows Azure S
  • 单击 web.py python 中的按钮时下载/导出 csv 文件

    我正在使用Pythonweb py构建小型网络应用程序的框架 它由一个 Home page以 url 作为输入 Reads anchor text and anchor tags从中 将其写入 csv 文件并下载 当我们点击 a 时 就会发