【发布时间】:2020-10-30 17:31:49
【问题描述】:
我正在尝试为我的网站创建一个站点地图,而不是通过一个可以为我制作它的网站来运行它。这是因为网站经常变化。
我在网上找到了部分实现的代码:
@app.route('/sitemap.xml', methods=['GET'])
def sitemap():
try:
"""Generate sitemap.xml. Makes a list of urls and date modified."""
pages = []
seven_days_ago = (datetime.datetime.now() - datetime.timedelta(days=7)).date().isoformat()
for rule in app.url_map.iter_rules():
if "GET" in rule.methods and len(rule.arguments) == 0:
pages.append( ["..." + str(rule.rule), seven_days_ago])
sitemap_xml = render_template('pages/sitemap_template.xml', pages=pages)
response = make_response(sitemap_xml)
response.headers["Content-Type"] = "application/xml"
return response
except Exception as e:
return(str(e))
它可以创建一个基本的站点地图。好的,很简单。
我想在每个页面的元标记中添加一个优先级,然后以此为基础构建站点地图。 This SO question/answer 涵盖了这一点,但它使用的是 beautifulsoup 和 urllib,并且更适合网络,而不是本地实例。
所以,我认为我需要为每条路线使用render_template(在本例中为rule.rule)然后解析它,也许使用 BeautifulSoup 并获得优先权。我不知道该怎么做。有没有办法根据路由获取每个模板,以便我解析它?
【问题讨论】:
-
[flaskapi.org/api-guide/parsers/]希望对您有帮助
标签: flask