2013-07-01 7 views
2

Я хочу извлечь тег из html-файла в python без использования BeautifulSoup. Например, я хочу, чтобы получитьизвлечение тегов из html-файла с использованием python

class="el" href="atsc__root__raised__cosine.html" target="_self">atsc_root_raised_cosine 

из

<a class="el" href="atsc__root__raised__cosine.html" target="_self">atsc_root_raised_cosine</a> 

Любые идеи?

+0

Почему вы не хотите использовать BeautifulSoup? Вероятно, есть веская причина, но это делает вопрос более полезным для других, если вы можете включить такую ​​информацию. –

+0

Это не тег, его просто фрагмент HTML. Что вы хотите сделать точно? –

ответ

1

Для проведения базового анализа синтаксиса вы можете использовать xml parser в stl.

вот пример превращения XML в HTML, используя его (из документации):

import xml.dom.minidom 

document = """\ 
<slideshow> 
<title>Demo slideshow</title> 
<slide><title>Slide title</title> 
<point>This is a demo</point> 
<point>Of a program for processing slides</point> 
</slide> 

<slide><title>Another demo slide</title> 
<point>It is important</point> 
<point>To have more than</point> 
<point>one slide</point> 
</slide> 
</slideshow> 
""" 

dom = xml.dom.minidom.parseString(document) 

def getText(nodelist): 
    rc = [] 
    for node in nodelist: 
     if node.nodeType == node.TEXT_NODE: 
      rc.append(node.data) 
    return ''.join(rc) 

def handleSlideshow(slideshow): 
    print "<html>" 
    handleSlideshowTitle(slideshow.getElementsByTagName("title")[0]) 
    slides = slideshow.getElementsByTagName("slide") 
    handleToc(slides) 
    handleSlides(slides) 
    print "</html>" 

def handleSlides(slides): 
    for slide in slides: 
     handleSlide(slide) 

def handleSlide(slide): 
    handleSlideTitle(slide.getElementsByTagName("title")[0]) 
    handlePoints(slide.getElementsByTagName("point")) 

def handleSlideshowTitle(title): 
    print "<title>%s</title>" % getText(title.childNodes) 

def handleSlideTitle(title): 
    print "<h2>%s</h2>" % getText(title.childNodes) 

def handlePoints(points): 
    print "<ul>" 
    for point in points: 
     handlePoint(point) 
    print "</ul>" 

def handlePoint(point): 
    print "<li>%s</li>" % getText(point.childNodes) 

def handleToc(slides): 
    for slide in slides: 
     title = slide.getElementsByTagName("title")[0] 
     print "<p>%s</p>" % getText(title.childNodes) 

handleSlideshow(dom) 
1

Посмотрите на эту XML API представленную в питона, он объясняет, как получить доступ атрибутов, элементов и имеет некоторые HTML примеры тоже. Вы также можете создавать объекты парсера.

Смежные вопросы