lxml库

lxml库

lxml是一个HTML/XML的解析器,主要的功能是如何解析和提取 HTML/XML数据。

基本使用:

1.我们可以利用他来解析HTML代码,并且在解析HTML代码的时候,如果HTML代码不规范,他会自动的进行补全。

#使用lxml的etree库
from lxml import etree

text = """
<div id="usrbar" alog-group="userbar" alog-alias="hunter-userbar-start"></div>
<ul id="header-link-wrapper" class="clearfix">
<li><a href="https://www.baidu.com/" data-path="s?wd=">网页</a></li>
<li style="margin-left:21px;"><span>新闻</span></li>
<li><a href="http://tieba.baidu.com/" data-path="f?kw=">贴吧</a></li>
<li><a href="https://zhidao.baidu.com/" data-path="search?ct=17&pn=0&tn=ikaslist&rn=10&lm=0&word=">知道</a></li>
<li><a href="http://music.baidu.com/" data-path="search?fr=news&ie=utf-8&key=">音乐</a></li>
<li><a href="http://image.baidu.com/" data-path="search/index?ct=201326592&cl=2&lm=-1&tn=baiduimage&istype=2&fm=&pv=&z=0&word=">图片</a></li>
<li><a href="http://v.baidu.com/" data-path="v?ct=3019898888&ie=utf-8&s=2&word=">视频</a></li>
<li><a href="http://map.baidu.com/" data-path="?newmap=1&ie=utf-8&s=s%26wd%3D">地图</a></li>
<li><a href="http://wenku.baidu.com/" data-path="search?ie=utf-8&word=">文库</a></li>
<div class="header-divider"></div>
</ul>
</div>
"""
#利用etree.HTML,将字符串解析为HTML文档
html_text = etree.HTML(text)        #html_text为Element对象    (可以执行xpath语法)

#将字符串序列化HTML文档
result = etree.tostring(html_text,encoding=‘utf-8‘).decode(‘utf-8‘)

print(result)

2.从文件中读取html代码:

from lxml import etree

#读取外部文件 hello.html
html = etree.parse(‘hello.html‘)
result = etree.tostring(html,pretty_print=True,encoding=‘utf-8‘).decode(‘utf-8‘)
print(result)

在上代码中,如果html代码不是很规范的话会报错,这时就要更改解析器

from lxml import etree

#读取外部文件 hello.html
parser = etree.HTMLParser(encoding=‘utf-8‘)                    #用html解析器
html = etree.parse(‘hello.html‘,parser=parser)              #.parse默认解析是以xml    我们要解析html就要改为HTML解析器
result = etree.tostring(html,pretty_print=True,encoding=‘utf-8‘).decode(‘utf-8‘)

print(result)

lxml结合xpath:

from lxml import etree

parser = etree.HTMLParser(encoding=‘utf-8‘)
html = etree.parse("tencent.html",parser=parser)

#1.获取所有tr标签
#trs = html.xpath("//tr")
#for tr in trs:
#    print(etree.tostring(tr,encoding=‘utf-8‘).decode("utf-8"))

#2.获得第2个tr标签
#tr = html.xpath("//tr[2]")[0]
#print(etree.tostring(tr,encoding=‘utf-8‘).decode("utf-8"))

#3.获取所有class等于even的tr标签
#trs = html.xpath("//tr[@class=‘even‘]")
#for tr in trs:
#    print(etree.tostring(tr,encoding=‘utf-8‘).decode("utf-8"))

#4.获取所有a标签的href属性
# trs = html.xpath("//a/@href")           #只选择href的值 跟上面不同的是不是一个标签内容
# for tr in trs:
#     print(tr)

#5.获取所有的职位信息(纯文本)
trs = html.xpath("//tr[position()>1]")
positions = []
for tr in trs:
    href = tr.xpath(".//a/@href")[0]           # .意思是在当前标签(第一个tr)下查找
    fullurl = "http://hr.tencent.com/" + href
    title = tr.xpath("./td[1]//text()")
    category = tr.xpath("./td[2]/text()")
    nums = tr.xpath("./td[3]/text()")
    address = tr.xpath("./td[4]/text()")
    pubtime = tr.xpath("./td[5]/text()")

    position = {
        ‘url‘: fullurl,
        ‘title‘: title,
        ‘category‘: category,
        ‘nums‘: nums,
        ‘address‘:address,
        ‘pubtime‘: pubtime
    }

    positions.append(position)
print(positions)

原文地址:https://www.cnblogs.com/c-pyday/p/9734980.html

时间: 2024-10-29 20:25:28

lxml库的相关文章

windows 8.1中 Python无法安装lxml库的解决方案

学习Python爬虫时,需要用到lxml库.在安装时,出现了错误! 下面是已经解决的过程: 1. 安装wheel库 1 pip install wheel 2.去 http://www.lfd.uci.edu/~gohlke/pythonlibs/ 下载 对应的lxml库 ,我的是2.7.12版本的(第一个) 3. 安装本地lxml的.whl包  (your-local-path:下载的.whl包路径) pip install your-local-path 完整操作如下: 借鉴了CSDN博客h

Python爬虫利器三之Xpath语法与lxml库的用法

前面我们介绍了 BeautifulSoup 的用法,这个已经是非常强大的库了,不过还有一些比较流行的解析库,例如 lxml,使用的是 Xpath 语法,同样是效率比较高的解析方法.如果大家对 BeautifulSoup 使用不太习惯的话,可以尝试下 Xpath. 参考文档: lxml python 官方文档 XPath语法参考 w3school 安装 pip install lxml 利用 pip 安装即可 XPath语法 XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在

爬虫 (3)- lxml库和贴吧图片下载案例

lxml库 lxml 是 一个HTML/XML的解析器,主要的功能是如何解析和提取 HTML/XML 数据. lxml和正则一样,也是用 C 实现的,是一款高性能的 Python HTML/XML 解析器,我们可以利用之前学习的XPath语法,来快速的定位特定元素以及节点信息. lxml python 官方文档:http://lxml.de/index.html 需要安装C语言库,可使用 pip 安装:pip install lxml (或通过wheel方式安装) 百度贴吧下载图片案例 源码下载

Windows环境下使用pip install安装lxml库

lxml是Python语言和XML以及HTML工作的功能最丰富和最容易使用的库.lxml是为libxml2和libxslt库的一个Python化的绑定.它与众不同的地方是它兼顾了这些库的速度和功能完整性.高效率解析Xpath,用于操作爬虫爬取网址url. 而在Windows中由于原始Python3的版本中并没有集成lxml库,在PyCharm中如果直接引用lxml库可能会出现Install Package Failed错误,并提示:error:Microsoft Visual C++10.0 i

(Windows)Python第三方库手动安装教程(以lxml库为例)

案例前提:已安装Python 已安装pip 1.进入官网https://www.lfd.uci.edu/~gohlke/pythonlibs/,搜索lxml库,下载到本地(放到Python目录下的Scripts文件中) 2.打开cmd,键入pip install wheel,先安装wheel库了才能安装.whl文件 ??? 3.此处根据提示,更新PIP(可不更新,更新后可不必考虑库的版本直接安装最新版本而已) ??? 4.命令行键入pip3 install lxml-4.4.0-cp37-cp3

xpath语法与lxml库

1.什么是XPath 一种在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历 2.节点 节点类型 在 XPath 中,有七种类型的节点:元素.属性.文本.命名空间.处理指令.注释以及文档(根)节点.其中,XML 文档是被作为节点树来对待的.树的根被称为文档节点或者根节点. 比如说: <?xml version="1.0" encoding="UTF-8"?> <bookstore> #文档节点 <

在使用python的lxml库的时候要注意的依赖问题

用pip安装lxml的时候,经常会遇到报错. 通常这跟依赖库有关系,比如libxslt-dev这个包没装. 强烈建议开发人员把生产服务器和开发机配置做100%同步,这样可以避免很多问题. 想交流这个库的同好可以联络我的微博:@王文文IT

Xpath语法与lxml库的用法

BeautifulSoup 已经是非常强大的库了,不过还有一些比较流行的解析库,例如 lxml,使用的是 Xpath 语法,同样是效率比较高的解析方法. 1.安装 pip install lxml 2. XPath语法 XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对元素和属性进行遍历.XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 都构建于 XPath 表达之上. 选取节点: XPath 使用路径表达式在 X

【xml】python的lxml库使用

1.官方教程:http://lxml.de/tutorial.html#parsing-from-strings-and-files  最重要的文档,看完基本就能用了 2.lxml支持xpath,xpath的教程:http://www.w3school.com.cn/xpath/xpath_examples.asp 上面的文档都不长,花不了多长时间看的~