Простой способ получить данные между тегами XML или HTML-файлов в Python? - PullRequest
3 голосов
/ 20 января 2010

Я использую Python и мне нужно найти и получить все символьные данные между тегами:

<tag>I need this stuff</tag>

Затем я хочу вывести найденные данные в другой файл.Я просто ищу очень простой и эффективный способ сделать это.

Если вы можете опубликовать быстрый фрагмент кода, чтобы изобразить простоту использования.Потому что у меня возникли проблемы с пониманием парсеров.

Ответы [ 6 ]

7 голосов
/ 20 января 2010

без внешних модулей, например

>>> myhtml = """ <tag>I need this stuff</tag>
... blah blah
... <tag>I need this stuff too
... </tag>
... blah blah """
>>> for item in myhtml.split("</tag>"):
...   if "<tag>" in item:
...       print item [ item.find("<tag>")+len("<tag>") : ]
...
I need this stuff
I need this stuff too
2 голосов
/ 20 января 2010

Мне очень нравится анализ дерева элементов , а затем использование element.text и element.tail.

Он также имеет xpath как поиск

>>> from xml.etree.ElementTree import ElementTree
>>> tree = ElementTree()
>>> tree.parse("index.xhtml")
<Element html at b7d3f1ec>
>>> p = tree.find("body/p")     # Finds first occurrence of tag p in body
>>> p
<Element p at 8416e0c>
>>> p.text
"Some text in the Paragraph"
>>> links = p.getiterator("a")  # Returns list of all links
>>> links
[<Element a at b7d4f9ec>, <Element a at b7d4fb0c>]
>>> for i in links:             # Iterates through all found links
...     i.attrib["target"] = "blank"
>>> tree.write("output.xhtml")
2 голосов
/ 20 января 2010

Beautiful Soup - замечательный анализатор HTML / XML для Python:

Красивый суп - это Python HTML / XML парсер предназначен для быстрого оборота такие проекты, как скрининг экрана. Три функции делают его мощным:

  1. Прекрасный суп не захлебнется, если вы дадите ему плохую разметку. Это дает разбирать дерево, которое составляет примерно как большой смысл как ваш оригинальный документ. Обычно этого достаточно, чтобы собрать данные вам нужны и убегайте.
  2. Beautiful Soup предоставляет несколько простых методов и пифоновых идиом для навигация, поиск и изменение дерево разбора: инструментарий для анализа документ и извлечение того, что вам нужно. Вам не нужно создавать пользовательские парсер для каждого приложения.
  3. Beautiful Soup автоматически конвертирует входящие документы в Unicode и исходящие документы на UTF-8. Вы не нужно думать о кодировках, если в документе не указано кодирование и красивый суп не может автоопределение одного. Тогда вам просто нужно укажите оригинальную кодировку.
1 голос
/ 16 августа 2017

Вот как я это делаю:

    (myhtml.split('<tag>')[1]).split('</tag>')[0]

Скажите, сработало ли это!

0 голосов
/ 17 мая 2017
def value_tag(s):
    i = s.index('>')
    s = s[i+1:]
    i = s.index('<')
    s = s[:i]
    return s
0 голосов
/ 20 января 2010

Использовать xpath и lxml;

from lxml import etree

pageInMemory = open("pageToParse.html", "r")

parsedPage = etree.HTML(pageInMemory)

yourListOfText = parsedPage.xpath("//tag//text()")

saveFile = open("savedFile", "w")
saveFile.writelines(yourListOfText)

pageInMemory.close()
saveFile.close()

Быстрее, чем Красивый суп.

Если вы хотите проверить свой Xpath - я считаю XFather FireFox чрезвычайно полезным .

Дополнительные примечания:

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