使用lxml在Python中查找字符串的一部分

0 投票
1 回答
764 浏览
提问于 2025-04-17 03:55

我有一个标签,看起来像这样……

<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

你应该这样做...

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 里面会存放匹配的标签。

撰写回答