我有这样的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>
Run Code Online (Sandbox Code Playgroud)
我想使用xpath获取书籍及其各自的URL,但似乎我的方法不起作用.为简单起见,我试图提取"li"标签下的所有元素,如下所示
lis = tree.xpath('//div[@id="all-stories"]/div/text()')
Run Code Online (Sandbox Code Playgroud)
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())
Run Code Online (Sandbox Code Playgroud)
产量
('book1_url', 'Book1')
('book2_url', 'Book2')
Run Code Online (Sandbox Code Playgroud)
XPath //div[@id="all-stories"]/div与任何内容都不匹配,因为div外部div标记内没有子项.
XPath //div[@id="all-stories"]/li也不匹配,因为标签内没有直接的子litage 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().
| 归档时间: |
|
| 查看次数: |
16464 次 |
| 最近记录: |