繁体   English   中英

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

[英]How can I connect my python script with my HTML file?

基本上我从网页获取一些数据,并将其放入数组中,我想将该数组的内容输出到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")

您的问题有两个子问题:

  • 生成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语言的基本用法和/或语法页面以获取mor信息。 但是通过这里介绍的结构,您应该能够完成任务。

提供HTML

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

静态或动态

  • 你的数据是静态的吗? 这意味着,您的数据会在近期发生变化吗? 如果不是,那么您只需在本地计算机上生成HTML,然后将html推送到一个提供html的简单Web服务器。

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

兰或WWW?

  • 如果您只需要在LAN中使用它,则只需在本地计算机上运行Web服务器即可。 如果你不期望太多的流量和安全性不是一个问题,你可以使用python标准库中http服务器

  • 如果您需要在Web上使用它,则需要查找Web服务器。 有一些服务是免费的低流量。 仅举几例: heroku ,它专注于python,因此它适用于动态用例。 Github页面 ,您可以从github存储库直接提供HTML。 我认为它只能提供静态HTML。

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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM