使用lxml提取HTML/XML 数据

  1. demo
    1. 获取标签元素内容为空的两种不同效果:

demo

html = '''
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title class="sub_title">Title</title>
</head>
<body>
<div class="none">
<a href ="#">Spaceack's code</a>
</div>
<div class="link">
<a href ="http://spaceack.com">Spaceack's blog</a>
</div>
</body>
</html>
'''

from lxml import etree
tree = etree.HTML(html)
# 获取class为link的a标签的元素内容
a_content = tree.xpath('.//div[@class="link"]/a/text()')
print(a_content)
# ["Spaceack's blog"]

# 使用attrib获取标签的属性值
href_element = tree.xpath('.//div[@class="link"]/a')
print(href_element)
# [<Element a at 0x7ff3571a4d80>]
href = href_element[0].attrib.get('href')
print(href)
# http://spaceack.com

获取标签元素内容为空的两种不同效果:

  • demo
    from lxml import etree
    # 可见第二个标签 td 元素内容为空
    tree = etree.HTML("<th>水果</th><td>苹果</td><th>价格</th><td></td>")
    key = tree.xpath("//th/text()")
    value = tree.xpath("//td/text()")
    print(key, value)
    '''
    ['水果', '价格'] ['苹果']
    '''
    如果想让价格使用None或空字符串''来占位,可以这样做:
key = tree.xpath("//th")
value = tree.xpath("//td")

key = [item.text for item in key] 
value = [item.text for item in value]
print(key, value)
'''
['水果', '价格'] ['苹果', None]
'''
key = [""  if   item.text==None else item.text for item in key]
value = [""  if  item.text==None else item.text for item in value]
print(key, value)
'''
key ['水果', '价格']
['水果', '价格'] ['苹果', '']
'''

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 [email protected]

文章标题:使用lxml提取HTML/XML 数据

文章字数:417

本文作者:Spaceack

发布时间:2017-06-19, 04:00:00

最后更新:2020-01-21, 03:13:31

原始链接:http://spaceack.com/2017/06/19/2017-06-19-python-lxml-shippet/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录