我正在使用 pythonweb.py
框架来构建一个小型 Web 应用程序。
它由一个
Home page
以 url 作为输入- 读取
anchor text
并anchor tags
从中读取 - 将其写入 csv 文件并下载
当我们点击一个export the links
按钮时,这里的第 2 步和第 3 步发生了,下面是我的代码
代码.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 文件链接和文本。
例如,当我们提交
http://www.google.co.in
并单击时export the links
,所有锚 url 和锚文本都保存到 csv 文件并成功下载但是例如,当我们
http://stackoveflow.com
立即给出另一个 url 并单击export the links
按钮时,csv 文件(使用 url 的域名创建,如上面的代码所示)正在使用标签链接下载,但下载的 csv 文件还包含数据(锚上一个 url 的文本和链接),即http://www.google.co.in
.
那就是数据在来自不同 url 的同一个 csv 文件中被覆盖,谁能告诉我上面export class
生成 csv 文件的代码()中有什么问题,为什么数据被覆盖而不是创建一个新的 csv 文件动态创建的名称?
最后,我的意图是下载/导出一个新的 csv 文件,其中包含 url 的域名(在我的代码中切片),每次我们提供新的 url .
任何人都可以扩展/对我的上述代码进行必要的更改,以下载个人 url 的个人 csv 文件............