gpt4 book ai didi

python - 使用xpath获取div标签内的列表项

转载 作者:太空狗 更新时间:2023-10-29 21:37:37 25 4
gpt4 key购买 nike

我有一个这样的html

<div id="all-stories" class="book"> 
<ul>

<li title="Book1" ><a href="book1_url">Book1</a></li>

<li title="Book2" ><a href="book2_url">Book2</a></li>
</ul>

</div>

我想使用 xpath 获取书籍及其各自的 url,但我的方法似乎不起作用。为简单起见,我尝试提取“li”标签下的所有元素,如下所示

lis = tree.xpath('//div[@id="all-stories"]/div/text()')

最佳答案

import lxml.html as LH

content = '''\
<div id="all-stories" class="book">
<ul>

<li title="Book1" ><a href="book1_url">Book1</a></li>

<li title="Book2" ><a href="book2_url">Book2</a></li>
</ul>

</div>
'''
root = LH.fromstring(content)
for atag in root.xpath('//div[@id="all-stories"]//li/a'):
print(atag.attrib['href'], atag.text_content())

产量

('book1_url', 'Book1')
('book2_url', 'Book2')

XPath //div[@id="all-stories"]/div 不匹配任何内容,因为外部 内没有子 div div 标签。

XPath //div[@id="all-stories"]/li 也不会匹配,因为没有direct child li 标记在 div 标记内。但是,//div[@id="all-stories"]//li 确实匹配 li 标签,因为 // 告诉 XPath 递归搜索尽可能深入以找到 li 标记。

现在,您要查找的内容不在li 标签中。它位于 a 标签内。所以改为使用 XPath'//div[@id="all-stories"]//li/a' 到达 a 标签。href 属性的值可以通过 atag.attrib['href'] 访问,文本通过 atag.text_content() 访问。

关于python - 使用xpath获取div标签内的列表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17380869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com