2016-12-15 52 views
1
我有我的烧瓶代码问题

,它不会只是我希望它相同的结构返回瓶 - For循环不返回相同的输出,因为我希望它

这里是我的代码对于初学者:

from flask import Flask, render_template, jsonify, request 
from lxml import html 
import urlopen, urllib 
import requests 
from bs4 import BeautifulSoup 
import time 
import datetime 

app = Flask(__name__) 

@app.route("/") 
def index(): 
#tv 
    tvPage = requests.get("https://www.freeview.co.uk") 
    tvSoup = BeautifulSoup(tvPage.content) 
    tvData = tvSoup.find_all("div",{"class": "box__listing"}) 
    tvList = [] 
    for program in tvData: 
     tvList = tvList + [program] 
    tvNews = tvList 


    return render_template("main.html", tvNews=tvNews) 

if __name__ == '__main__': 
    app.run(debug=True,port=6500) 

而在HTML模板我有以下几点:

{% for program in tvNews %} 
    <li>{{ program.text }}</li> 
{% endfor %} 

这将返回以下:http://imgur.com/a/Va0AH

我的问题是:我怎样才能使每个新的时间段在一个新的行上?现在它将9pm和10pm视为一个字符串,而不是Freeview显示它的方式(请参见屏幕截图)

当我在终端中运行它时,我在新行中获取它,并且在使用chrome开发工具检查该元素时,它看起来像是在所有新行上。我究竟做错了什么?

非常感谢。

+1

如果你只是提取你一定会在一行上得到的一切一个元素中的文本。 'box__listing'元素在里面有更多的结构,利用它。 –

+0

我试着得到“dl”元素,但那只是返回相同的结构。你能否指出我在这方面的正确方向?这里是我解析的网站:https://www.freeview.co.uk/ – erikvm

+0

'dl'元素不是一个改进,因为一个元素仍然包含两行。使用'dt'和'dd'元素。 –

回答

0

添加safe过滤器,你的变量:

{{ program.text|safe }}