XPath:匹配一个表达式中的多个元素

xyz*_*123 2 python xpath lxml

我正在尝试这样做(使用lxml):

//*[@id="32808345" or @id="33771423" or @id="15929470" or @id="33771117" or @id="15929266"]
Run Code Online (Sandbox Code Playgroud)

为了获得所有元素,无论标记是什么,都具有指定的id.我得到以下回溯:

invalid attribute predicate
Run Code Online (Sandbox Code Playgroud)

这就是我生成str的方式(如果这与问题相关):

refs = ' or '.join('@id="%s"' % ref for ref in refs[0:5])
elements = etree.iterfind('//*[%s]' % refs)
Run Code Online (Sandbox Code Playgroud)

编辑,使用以下解决方案我收到此错误:

File "lxml.etree.pyx", line 1201, in lxml.etree._Element.iterchildren (src/lxml/lxml.etree.c:36294)
  File "lxml.etree.pyx", line 2163, in lxml.etree.ElementChildIterator.__init__ (src/lxml/lxml.etree.c:45331)
  File "lxml.etree.pyx", line 2118, in lxml.etree._ElementTagMatcher._initTagMatch (src/lxml/lxml.etree.c:44913)
  File "apihelpers.pxi", line 1413, in lxml.etree._getNsTag (src/lxml/lxml.etree.c:21412)
ValueError: Empty tag name
Run Code Online (Sandbox Code Playgroud)

kan*_*der 6

我相信正常的方法是使用单管道操作员吗?

//*[@id="20"] | //*[@id="30"] | ... etc.
Run Code Online (Sandbox Code Playgroud)

你有一个你试图这样做的XML片段吗?