如何将我的python脚本与我的HTML文件连接?

问题描述 投票:3回答:2

基本上我从网页获取一些数据,并将其放入数组中,我想将该数组的内容输出到HTML文件中的表中。经过一些研究后,我发现使用mako模板可能是最好的解决方案,但我不明白如何使用它?任何人都可以指导我完成这些步骤或提供更好的解决方案来执行此python脚本并在Web上输出其结果吗?

import urllib2
import mako
from bs4 import BeautifulSoup as BS

html = urllib2.urlopen("<link-to-web-page>")
soup = BS(html)
data = []


for each_course in soup.findAll('li',{'class':'<class-name>'}):
    inner_text = each_course.text
    data.append(inner_text)


for i in data:
    print (i+"\n")
python html html5 dom mako
2个回答
3
投票

您的问题有两个子问题:

  • 生成HTML以显示您的数据
  • 提供HTML

Mako可以为您提供第一个帮助。对于第二个,有不同的解决方案可供选择,具体取决于您的情况。

生成HTML

首先,你必须决定一个模板,这意味着你的数据将被填入的一般框架。如果你只想显示你的数据而没有任何进一步的信息,那么谜语将起作用,但如果它变得更复杂,它就是有用的东西作为mako。一般模板如何?这是一个非常简单的:

<html>
<body>
Hello world!
</body>
</html>

这不是很重要。它就像一个字符串。所以让我们得到一些python:

<html>
<body>
${x}
</body>
</html>

此模板包含您需要提供的变量:

template = Template(filename="yourtemplate.template") # or how ever you named your template
print(template.render(x="Hello World!")

你至少需要循环:

% for a in [1,2,3]
${a}
% endfor

这是循环的基本语法。当然,你可以做更复杂的事情。想象一下mylist是一个名字和年龄的Person实例列表:

% for person in mylist
Name: ${person.name}
Age: ${person.age}
% endfor

您可以在其中使用任意HTML。当然mako可以做更强大的事情,但是单个stackoverflow帖子对于那个空间很小。您可以阅读mako语言的basic usage和/或Syntax页面以获取mor信息。但是通过这里介绍的结构,您应该能够完成任务。

提供HTML

您仍然需要以某种方式将HTML带到Web或任何您想要的地方。您有多种可能性取决于您的需求:

Static or dynamic

  • 你的数据是静态的吗?这意味着,您的数据会在近期发生变化吗?如果不是,那么您只需在本地计算机上生成HTML,然后将html推送到一个提供html的简单Web服务器。
  • 您的数据是否动态?这意味着您的数据经常更改,启动本地计算机,运行脚本然后推送HTML是不合理的。相反,您必须告诉服务于您网页的服务器,以便在数据发生变化时运行您的脚本。有一种可能性,你可以使用CGI(像nginx这样的网络服务器或apache调用你的python脚本并提供输出)或者像djangoflask或其他的wsgi框架。当然这些也需要服务,或者来自像“apache”或“nginx”这样的“典型”网络服务器,或者像gunicorn这样的网络服务器。

兰或WWW?

  • 如果您只需要在LAN中使用它,则只需在本地计算机上运行Web服务器即可。如果您不期望太多的流量和安全性不是问题,您可以使用http server in the python standard library
  • 如果您需要在Web上使用它,则需要查找Web服务器。有一些服务是免费的低流量。举几个例子:heroku专注于python,所以它适合动态用例。 Github pages,您可以从github存储库直接提供HTML。我认为它只能提供静态HTML。

0
投票
data = [1, 2, 3, 4]


def data_to_html_table(data):
    html = '<table><tbody>'
    for item in data:
        html += '<tr><td>' + str(item) + '</td></tr>'
    html += '</tbody></table>'
    return html

print data_to_html_table(data)

导致html相当于

<table>
    <tbody>
        <tr>
            <td>1</td>
        </tr>
        <tr>
            <td>2</td>
        </tr>
        <tr>
            <td>3</td>
        </tr>
        <tr>
            <td>4</td>
        </tr>
    </tbody>
</table>
© www.soinside.com 2019 - 2024. All rights reserved.