Python - Сериализация HTML и вывод в виде JSON - PullRequest
0 голосов
/ 11 апреля 2011

У меня есть HTML-страница, которая отображает несколько значений.У меня также есть небольшое приложение, которое отображает данные с некоторых других моих страниц, но эти другие страницы - JSON, а не HTML.Я хочу использовать эти значения со страницы HTML, преобразовать в JSON, а затем вывести.

Причина, по которой я хочу это сделать, заключается в том, чтобы я мог просто повторно использовать свой код и просто изменить URL-адрес или даже динамическисоздайте его.

Я сделал HTML-страницу настолько простой, насколько это возможно, чтобы убрать весь мусор, чтобы сделать регулярное выражение более базовым.

Вот HTML-код:

<div class="BlockA">
    <h4>BlockA</h4>
    <div class="name">John Smith</div>
    <div class="number">2</div>
    <div class="name">Paul Peterson</div>
    <div class="number">14</div>
</div>

<div class="BlockB">
    <h4>BlockB</h4>
    <div class="name">Steve Jones</div>
    <div class="number">5</div>
</div>

Оба блока будут иметь различное количество элементов в зависимости от нескольких факторов.

Вот мой питон:

def index(request, toGet="xyz"):
    file = urllib2.urlopen("http://www.mysite.com/mypage?data="+toGet)
    data = file.read()
    dom = parseString(data)
    rows = dom.getElementsByTagName("BlockA")[0]
    readIn = ""
    for row in rows:
        readIn = readIn+json.dumps(
            {'name': row.getAttribute("location"),
            'number': row.getAttribute("number")},
            sort_keys=True,
            indent=4)+","
    response_generator = ( "["+readIn[:-1]+"]" )
    return HttpResponse(response_generator)

Так что это в основном чтение значений (на самом делеисточником в данном случае является XML), проходя через них и выводя все значения.

Если кто-то может указать мне правильное направление, это будет очень цениться.Например, чтение в тегах типа «BlockA», а затем в тегах «имя» и «номер».

Спасибо.

1 Ответ

2 голосов
/ 11 апреля 2011

Если вам действительно нужно проанализировать HTML-страницу в Python, вы должны использовать Beautiful Soup .Я спрашиваю, действительно ли ты должен этим заниматься.Используют ли страницы HTML и JSON один и тот же экземпляр Django?Все ли они являются частью одного и того же проекта?

Если они являются отделенными от одного и того же проекта, то вы можете использовать что-то вроде django-pneon , который представляет собой RESTful-фреймворкдля питона.Это позволит вам определить данные, которые должны быть представлены, и выводить их в нескольких форматах, таких как HTML / Django Template, JSON, XML или YAML.Вы также можете создать свои собственные эмиттеры для вывода в другом формате.

Таким образом, вы можете предоставить конкретный URL-адрес в виде обычного шаблона или получить те же данные, что и JSON, будет намного проще анализировать, чем HTML.

Извините, если я неправильно понимаю вашу проблему.Но на самом деле это звучит так, будто вы хотите представить представление в виде нескольких различных форматов, и RESTful-фреймворк поможет в этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...