基本上我从网页获取一些数据,并将其放入数组中,我想将该数组的内容输出到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")
您的问题有两个子问题:
Mako可以为您提供第一个帮助。对于第二个,有不同的解决方案可供选择,具体取决于您的情况。
首先,你必须决定一个模板,这意味着你的数据将被填入的一般框架。如果你只想显示你的数据而没有任何进一步的信息,那么谜语将起作用,但如果它变得更复杂,它就是有用的东西作为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带到Web或任何您想要的地方。您有多种可能性取决于您的需求:
兰或WWW?
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>