我正在写一个python脚本,它将从我的服务器获取随需应变资产的详细信息。目前,我正在获取的标题,海报和评级的资产。我可以把这些细节放到命名元组中。从那里我需要打印包括使用Jinja2的网页上的海报的显示。我不知道我在这里错过了什么。我写的代码是
Test.py
import requests
from collections import namedtuple
from jinja2 import Environment, FileSystemLoader
r = requests.get("http://172.19.37.3:5600/cmdc/content?region=24802¤cy=myr&catalogueId=24802&isPurchasable&filter=source~vod&filter=source~group&count=255&collapse=true&sort=%2btitle&pset=Group1")
data = r.json()
assets = {}
AssetDetails = namedtuple('AssetDetails', 'title, parental_rating, poster_uri')
env = Environment(loader=FileSystemLoader('templates'))
template = env.get_template('test.html')
for asset in data['contents']:
for media_uri in asset['media']:
poster_uri = ""
if media_uri['classification'] == "urn:nnds:Metro:metadata:MediaTypeCS:2007:2.1":
poster_uri = media_uri['uri']
assets[asset['id']] = AssetDetails(asset['title'], asset['parentalRating']['rating'], poster_uri)
#print assets[asset['id']]
if poster_uri != "":
print " ".join(('Title:', assets[asset['id']].title))
print " ".join(('Parental_Rating:', str(assets[asset['id']].parental_rating)))
print " ".join(('Poster_uri:', assets[asset['id']].poster_uri))
模板/test.html
<html lang="en">
<head>
<title>My Webpage</title>
</head>
<body>
{% for item in c['assets']: %}
<h1>{{ items['title'] }}</h1>
<ul>
<img src="{{ item['poster_uri'] }}" />
<li>Id: {{ item['parentalRating'] }} </li>
</ul>
{% endfor %}
或者还有其他方法可以在网页上获得这些详细信息吗?我知道我不是填充一个网页,以获得这些细节,但我不知道如何做到这一点?
修改了test.py中的代码。删除了namedtuple,并使用列表的列表来获取提取的值。在渲染时将列表传递给html文件。
test.py
import requests, re
from jinja2 import Environment, FileSystemLoader
r = requests.get("http://172.19.37.3:5600/cmdc/content?region=24802¤cy=myr&catalogueId=24802&isPurchasable&filter=source~vod&filter=source~group&count=30&collapse=true&sort=%2btitle&pset=Group1")
env = Environment(loader=FileSystemLoader('templates'))
template = env.get_template('test.html')
data = r.json()
assets = list()
for asset in data['contents']:
for media_uri in asset['media']:
poster_uri = ""
if media_uri['classification'] == "urn:nnds:Metro:metadata:MediaTypeCS:2007:2.1":
poster_uri = media_uri['uri']
a_id = (asset['id'])
id = a_id[a_id.index('://') + 3:]
a_id = id
asset_id = a_id.encode('utf-8')
asset_title = asset['title'].encode('utf-8')
asset = [asset_id, asset_title, poster_uri]
assets.append(asset)
poster_uri = poster_uri.encode('utf-8')
templateVars = { "VOD" : assets }
outputText = template.render( templateVars )
with open("VOD_Parsing.html", "wb") as fh:
fh.write(outputText)
test.html
<!doctype html>
<html lang="en">
<body>
<div id="content">
{% for item in VOD %}
<li>ID: {{ item[0] }}</li><li> Title: {{ item[1] }}</b></li>
<img src="{{ item[2] }}" alt="dummy.jpg"> </img>
{% endfor %}
</div>
</body>
</html>