Python и использование lxml, чтобы найти часть, если строка с использованием lxml html - PullRequest
0 голосов
/ 08 октября 2011

У меня есть вкладка, которая выглядит следующим образом ...

<div id="contentDiv_reviewHistoPop_B004HYGU18_4792" style="display:none;">

Я могу использовать

doc = lxml.html.document_fromstring(html)
el = doc.get_element_by_id('contentDiv_reviewHistoPop_B004HYGU18_4792') 

чтобы найти тег, но как мне использовать, например, подстановочный знак для поиска contentDiv_reviewHistoPop *, который найдет теги, содержащие часть строки?

Спасибо

1 Ответ

1 голос
/ 08 октября 2011

Вы должны сделать это ...

import lxml.etree as ET
from lxml.etree import XMLParser

parser = XMLParser(ns_clean=True, recover=True)
html = """<html><body><div id="contentDiv_reviewHistoPop_B004HYGU18_4792" style="display:none;"></body></html>"""
tree = ET.fromstring(html, parser)
tmp = list()
for elem in tree.iter():
    if elem.tag == 'div':
        for ii in elem.items():
            if (ii[0].lower() == 'id') and ('contentDiv_reviewHistoPop' in ii[1]):
                tmp.append(elem)

tmp будет содержать список соответствующих элементов div с соответствующим текстом.

Если вы можете использовать только lxml.html,затем сделайте это ...

import lxml.html

html = """<html><body><div id="contentDiv_reviewHistoPop_B004HYGU18_4792" style="display:none;"></body></html>"""
doc = lxml.html.document_fromstring(html)
tmp = list()
for elem in doc.iter():
    if elem.tag == 'div':
        for ii in elem.items():
            if (ii[0].lower() == 'id') and ('contentDiv_reviewHistoPop' in ii[1]):
                tmp.append(elem)

Опять же ... tmp будет содержать соответствующие теги

...