如何将我的 python 脚本与我的 HTML 文件连接起来?
How can I connect my python script with my HTML file?
基本上我从网页获取一些数据,并将其放入数组中,我想将该数组的内容输出到 HTML 文件中的 table 中。经过一些研究,我发现使用 mako 模板可能是最好的解决方案,但我不明白如何使用它?谁能指导我完成这些步骤或提供更好的解决方案来执行此 python 脚本并将其结果输出到网络上?
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")
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>
你的问题有两个子问题:
- 生成 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 可以做更强大的事情,但是一个单独的 Whosebug post 就太小了 space。您可以阅读 mako 语言的 basic usage and/or Syntax 页面以获取更多信息。但是有了这里介绍的结构,你应该能够完成你的任务。
发球HTML
您仍然需要以某种方式将 HTML 带到网络上或任何您想要的地方。你有多种可能性取决于你想要什么:
静态或动态
你的数据是静态的吗?这意味着,您的数据会在近期发生变化吗?如果不是,那么您可以简单地在本地计算机上生成 HTML,然后将 html 推送到服务于 html.
的简单网络服务器
你的数据是动态的吗?这意味着您的数据经常更改,启动本地计算机、运行 您的脚本然后推送 HTML 是不合理的。相反,只要数据发生变化,您就必须告诉为您的网页提供服务的服务器 运行 您的脚本。有不止一种可能性可以做到这一点,您可以使用 CGI(像 nginx 或 apache 这样的网络服务器调用您的 python 脚本并提供输出)或像 django or flask or others. Of course these also need to be served, either from a "typical" webserver like apache or nginx or something like gunicorn
这样的 wsgi 框架
局域网还是 WWW?
如果您只需要它在 LAN 中可用,您只需 运行 本地计算机上的网络服务器即可。如果您不希望有太多流量并且安全性不是问题,您可以使用 http server in the python standard library.
如果您需要它在网络上可用,您需要寻找一个网络服务器。有一些服务对于低流量是免费的。仅举几例:heroku which has a focus on python, so it's suited for the dynamic use case. Github pages 您可以在其中直接从 github 存储库提供 HTML。我认为它只能提供静态 HTML.
基本上我从网页获取一些数据,并将其放入数组中,我想将该数组的内容输出到 HTML 文件中的 table 中。经过一些研究,我发现使用 mako 模板可能是最好的解决方案,但我不明白如何使用它?谁能指导我完成这些步骤或提供更好的解决方案来执行此 python 脚本并将其结果输出到网络上?
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")
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>
你的问题有两个子问题:
- 生成 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 可以做更强大的事情,但是一个单独的 Whosebug post 就太小了 space。您可以阅读 mako 语言的 basic usage and/or Syntax 页面以获取更多信息。但是有了这里介绍的结构,你应该能够完成你的任务。
发球HTML
您仍然需要以某种方式将 HTML 带到网络上或任何您想要的地方。你有多种可能性取决于你想要什么:
静态或动态
你的数据是静态的吗?这意味着,您的数据会在近期发生变化吗?如果不是,那么您可以简单地在本地计算机上生成 HTML,然后将 html 推送到服务于 html.
的简单网络服务器你的数据是动态的吗?这意味着您的数据经常更改,启动本地计算机、运行 您的脚本然后推送 HTML 是不合理的。相反,只要数据发生变化,您就必须告诉为您的网页提供服务的服务器 运行 您的脚本。有不止一种可能性可以做到这一点,您可以使用 CGI(像 nginx 或 apache 这样的网络服务器调用您的 python 脚本并提供输出)或像 django or flask or others. Of course these also need to be served, either from a "typical" webserver like apache or nginx or something like gunicorn
这样的 wsgi 框架
局域网还是 WWW?
如果您只需要它在 LAN 中可用,您只需 运行 本地计算机上的网络服务器即可。如果您不希望有太多流量并且安全性不是问题,您可以使用 http server in the python standard library.
如果您需要它在网络上可用,您需要寻找一个网络服务器。有一些服务对于低流量是免费的。仅举几例:heroku which has a focus on python, so it's suited for the dynamic use case. Github pages 您可以在其中直接从 github 存储库提供 HTML。我认为它只能提供静态 HTML.