Вывод HTML с использованием шаблона и JSON для данных - PullRequest
0 голосов
/ 24 октября 2018

Какой хороший способ вывести (в соответствии с AMP) HTML-код, используя шаблон и JSON для данных?У меня есть хороший маленький скрипт на Python:

import requests
import json
from bs4 import BeautifulSoup

url = requests.get('https://www.perfectimprints.com/custom-promos/20492/Beach-Balls.html')
source = BeautifulSoup(url.text, 'html.parser')

products = source.find_all('div', class_="product_wrapper")
infos = source.find_all('div', class_="categories_wrapper")

def get_category_information(category):
  category_name = category.find('h1', class_="category_head_name").text
  return {
    "category_name": category_name.strip()
  }

category_information = [get_category_information(info) for info in infos]

with open("category_info.json", "w") as write_file:
  json.dump(category_information, write_file)

def get_product_details(product):
  product_name = product.find('div', class_="product_name").a.text
  sku = product.find('div', class_="product_sku").text
  product_link = product.find('div', class_="product_image_wrapper").find("a")["href"]
  src = product.find('div', class_="product_image_wrapper").find('a').find("img")["src"]
  return {
      "title": product_name,
      "link": product_link.strip(),
      "sku": sku.strip(),
      "src": src.strip()
  }

all_products = [get_product_details(product) for product in products]

with open("products.json", "w") as write_file:
  json.dump({'items': all_products}, write_file)

print("Success")

, который генерирует нужные мне JSON-файлы.Однако теперь мне нужно использовать эти файлы JSON и ввести их в свой шаблон ( gist ) везде, где написано {{ JSON DATA HERE }}.

Я даже не уверен, с чего начать.Мне больше всего нравится JavaScript, поэтому я хотел бы использовать его, если это возможно.Я думаю, что-то с участием Node.js.

1 Ответ

0 голосов
/ 24 октября 2018

Вот как вы можете визуализировать HTML с помощью механизма шаблонов и использовать его для возврата чистого HTML:

from jinja2 import Template

me = Template('<h1>Hello {{x}}<h1>')
html = me.render({'x': 'world'})
return html

html - это ваша отображаемая строка HTML.Кроме того, вы можете выполнить рендеринг из файла:

from jinja2 import Template
with open('your_template.html') as file_:
    template = Template(file_.read())
html = template.render(your_dict)
return html

Поскольку вы собираетесь генерировать HTML тем или иным образом, использование шаблонизатора сэкономит вам много времени.Вы также можете сделать {% для элемента в списке%}, и это значительно упростит вашу задачу.

...