- 浏览: 3362389 次
- 性别:
- 来自: 珠海
文章分类
- 全部博客 (1633)
- Java (250)
- Android&HTML5 (111)
- Struts (10)
- Spring (236)
- Hibernate&MyBatis (115)
- SSH (49)
- jQuery插件收集 (55)
- Javascript (145)
- PHP (77)
- REST&WebService (18)
- BIRT (27)
- .NET (7)
- Database (105)
- 设计模式 (16)
- 自动化和测试 (19)
- Maven&Ant (43)
- 工作流 (36)
- 开源应用 (156)
- 其他 (16)
- 前台&美工 (119)
- 工作积累 (0)
- OS&Docker (83)
- Python&爬虫 (28)
- 工具软件 (157)
- 问题收集 (61)
- OFbiz (6)
- noSQL (12)
最新评论
-
HEZR曾嶸:
你好博主,这个不是很理解,能解释一下嘛//左边+1,上边+1, ...
java 两字符串相似度计算算法 -
天使建站:
写得不错,可以看这里,和这里的这篇文章一起看,有 ...
jquery 遍历对象、数组、集合 -
xue88ming:
很有用,谢谢
@PathVariable映射出现错误: Name for argument type -
jnjeC:
厉害,困扰了我很久
MyBatis排序时使用order by 动态参数时需要注意,用$而不是# -
TopLongMan:
非常好,很实用啊。。
PostgreSQL递归查询实现树状结构查询
使用由 Python 编写的 lxml 实现高性能 XML 解析 http://blog.csdn.net/yatere/article/details/6667043
用lxml解析HTMLhttp://www.cnblogs.com/descusr/archive/2012/06/20/2557075.html
分步遍历:比先遍历得到body的某个div,然后在使用这个div的内容做遍历基础,继续通过它往下遍历
结构是body-*->div[class='block untagged mb15 bs2'],这个div下面又存在许多div,然后把这个div当作根节点,在继续xpath查找下面的元素。
python html parser库lxml的介绍和使用(快速入门)
http://blog.csdn.net/marising/article/details/5821090
lxm是python的一个html/xml解析并建立dom的库,lxml的特点是功能强大,性能也不错,xml包含了ElementTree ,html5lib ,beautfulsoup 等库,但是lxml也有自己相对应的库,所以,导致lxml比较复杂,初次使用者很难了解其关系。
1. 解析html并建立dom
如果用beautifulsoup的解析器,则
但是我强烈建议使用soupparser,因为其处理不规范的html的能力比etree强太多。
2. 按照Dom访问Element
子元素长度
访问子元素:
循环访问:
查看节点索引
字节点获取父节点
访问所有子节点
遍历和打印所有子节点:
元素的兄弟或邻居节点是通过next和previous属性来访问的
The siblings (or neighbours) of an element are accessed as next and previous elements:
3. 访问节点属性
也可以这样
带属性的元素
XML元素支持属性,可以用Element工厂方法直接创建。
可以使用set和get方法访问这些属性:
也可以使用attrib性质的字典接口
4. 访问Element的内容
text只是从本节点开始到第一个字节点结束;tail是从最后一个字节结束到本节点未知。
访问本节点所有文本信息
访问本节点和子节点所有文本信息
貌似返回本文档中所有文字信息
body.text_content()返回本节点所有文本信息。
5.Xpath的支持
id=“1”的元素
body下的第1个div
参考:
lxml的官方文档:http://codespeak.net/lxml/
HtmlParser的性能:http://blog.ianbicking.org/2008/03/30/python-html-parser-performance/
用lxml解析HTMLhttp://www.cnblogs.com/descusr/archive/2012/06/20/2557075.html
分步遍历:比先遍历得到body的某个div,然后在使用这个div的内容做遍历基础,继续通过它往下遍历
def scanningHotArticle(url): print url request=requests.get(url) dom=soupparser.fromstring(request.content) body=dom[1] articleList=body.xpath("//div[@class='block untagged mb15 bs2']") for article in articleList: articleStr= etree.tostring(article) articleBody=soupparser.fromstring(articleStr) print len(articleBody.xpath("//div[@class='detail']"))
结构是body-*->div[class='block untagged mb15 bs2'],这个div下面又存在许多div,然后把这个div当作根节点,在继续xpath查找下面的元素。
python html parser库lxml的介绍和使用(快速入门)
http://blog.csdn.net/marising/article/details/5821090
lxm是python的一个html/xml解析并建立dom的库,lxml的特点是功能强大,性能也不错,xml包含了ElementTree ,html5lib ,beautfulsoup 等库,但是lxml也有自己相对应的库,所以,导致lxml比较复杂,初次使用者很难了解其关系。
1. 解析html并建立dom
>>> import lxml.etree as etree >>> html = '<html><body id="1">abc<div>123</div>def<div>456</div>ghi</body></html>' >>> dom = etree.fromstring(html) >>> etree.tostring(dom) '<html><body id="1">abc<div>123</div>def<div>456</div>ghi</body></html>'
如果用beautifulsoup的解析器,则
>>> import lxml.html.soupparser as soupparser >>> dom = soupparser.fromstring(html) >>> etree.tostring(dom) '<html><body id="1">abc<div>123</div>def<div>456</div>ghi</body></html>'
但是我强烈建议使用soupparser,因为其处理不规范的html的能力比etree强太多。
2. 按照Dom访问Element
子元素长度
>>> len(dom) 1
访问子元素:
>>> dom[0].tag 'body'
循环访问:
>>> for child in dom: ... print child.tag ... body
查看节点索引
>>>body = dom[0] >>> dom.index(body) 0
字节点获取父节点
>>> body.getparent().tag 'html'
访问所有子节点
>>> for ele in dom.iter(): ... print ele.tag ... html body div div
遍历和打印所有子节点:
>>> children = list(root) >>> for child in root: ... print(child.tag)
元素的兄弟或邻居节点是通过next和previous属性来访问的
The siblings (or neighbours) of an element are accessed as next and previous elements:
>>> root[0] is root[1].getprevious() # lxml.etree only! True >>> root[1] is root[0].getnext() # lxml.etree only! True
3. 访问节点属性
>>> body.get('id') '1'
也可以这样
>>> attrs = body.attrib >>> attrs.get('id') '1'
带属性的元素
XML元素支持属性,可以用Element工厂方法直接创建。
>>> root = etree.Element("root", interesting="totally") >>> etree.tostring(root) b’<root interesting="totally"/>’
可以使用set和get方法访问这些属性:
>>> print root.get("interesting") totally >>> root.set("interesting", "somewhat") >>> print root.get("interesting") somewhat
也可以使用attrib性质的字典接口
>>> attributes = root.attrib >>> print(attributes["interesting"]) somewhat >>> print(attributes.get("hello")) None >>> attributes["hello"] = "Guten Tag" >>> print(attributes.get("hello")) Guten Tag >>> print(root.get("hello")) Guten Tag
4. 访问Element的内容
>>> body.text 'abc' >>> body.tail
text只是从本节点开始到第一个字节点结束;tail是从最后一个字节结束到本节点未知。
访问本节点所有文本信息
>>> body.xpath('text()') ['abc', 'def', 'ghi']
访问本节点和子节点所有文本信息
>>> body.xpath('//text()') ['abc', '123', 'def', '456', 'ghi']
貌似返回本文档中所有文字信息
body.text_content()返回本节点所有文本信息。
5.Xpath的支持
所有的div元素 >>> for ele in dom.xpath('//div'): ... print ele.tag ... div div
id=“1”的元素
>>> dom.xpath('//*[@id="1"]')[0].tag 'body'
body下的第1个div
>>> dom.xpath('body/div[1]')[0].tag 'div'
参考:
lxml的官方文档:http://codespeak.net/lxml/
HtmlParser的性能:http://blog.ianbicking.org/2008/03/30/python-html-parser-performance/
发表评论
-
Htmlunit使用
2015-04-11 20:12 1062http://my.oschina.net/u/852445/ ... -
垂直爬虫 webmagic
2014-09-05 20:24 2999新版文档地址 http://webmagic.io/docs/ ... -
python Tkinter的一些记录
2013-10-14 11:06 17541. Label里面的文本对齐方式:http://www.hi ... -
Python中执行外部命令并捕获双向输出
2013-10-12 15:08 2402原文:http://my.oschina.net/qihh/b ... -
python: 界面开发Tkinter
2013-10-10 16:38 1647python GUI开发 工具选择 http://blog.c ... -
Python多线程学习
2013-10-08 09:39 1408http://www.cnblogs.com/tqsummer ... -
问题: Max retries exceeded with url
2013-10-07 11:36 29264解决一: http://stackoverflow.com/q ... -
python + request + lxml的几个例子
2013-10-06 22:09 4438例子没有加入失败后重做的功能,这个也可以考虑增加。 第三个例子 ... -
python对文件的创建等处理
2013-10-06 21:24 1142http://www.qttc.net/201209207.h ... -
python: json,base64 的使用
2013-10-06 19:12 2958JSON 1. import json 2. json.dum ... -
python requests 下载图片和数据库读取
2013-10-02 15:56 18479python requests 下载图片 de ... -
python类型转换
2013-10-01 14:12 1040http://jayzotion.iteye.com/blog ... -
python字符串编码判断
2013-09-30 14:13 2166Python 字符编码判断 http://blog.sina. ... -
Python:数组、列表(list)、字典(dict)、字符串(string)常用基本操作小结
2013-09-30 13:07 13669连接 list 与分割字符串h ... -
Python模块学习 ---- datetime
2013-09-30 09:39 2181[Python Tip]如何计算时间 ... -
用Python操作Mysql和中文问题
2013-09-29 13:55 2614http://www.iteye.com/topic/5730 ... -
Python 字符串操作(截取/替换/查找/分割)
2013-09-29 13:01 6186python字符串连接 先介绍下效率比较低的,有些新手朋友就会 ... -
Python中使用中文
2013-09-29 10:25 1116http://blog.csdn.net/kernelspir ... -
Beautiful Soup 中文教程
2013-09-29 09:36 2689http://www.pythonclub.org/modul ... -
python + request + pyquery[安装失败]
2013-09-28 20:51 2147比urllib好用的requests http://www.b ...
相关推荐
一、介绍 BeautifulSoup库是灵活又方便的网页解析库,处理高效,支持多种解析器。利用它不用编写正则表达式即可方便地实现网页信息的提取。 Python常用解析库 解析器 使用方法 优势 劣势 Python标准库 ...
lxml第三方网页解析库,也可以使用python自带html.parser re正则表达式用于查找提取字符 matplotlib.pyplot用于绘图 numpy用于辅助绘图处理对应数据 中途问题注意:使用CSS选择器选择获取了元素路径,但是带入...
1、常见的python网页解析工具有:re正则匹配、python自带的html.parser模块、第三方库BeautifulSoup(重点学习)以及lxm库。 2、常见网页解析器分类 (1)模糊匹配 :re正则表达式即为字符串式的模糊匹配模式;...
Day06回顾 1、多线程爬虫 1、多进程线程应用场景 1、多进程 :大量密集并行计算 ... 2、html.parser :一般 3、xml :快,文档容错能力强 3、常用方法 1、find_all() :列表 1、r_list = soup
bs4库官方推荐我们使用的是lxml解析器,原因是它具有更高的效率,所以我们也将采用lxml解析器。 PS注意:很多人学Python过程中会遇到各种烦恼问题,没有人解答容易放弃。为此小编建了个Python全栈免费
它使用lxml库将该信息解析为Python字典,该字典可轻松用于研究,例如在文本挖掘和自然语言处理管道中。 有关可用的API和有关数据集的详细信息,请参阅我们的或以获取更多详细信息。 下面,我们列出了一些核心功能...
KAF 中的句子数量完全相同要求VUKafParserPy:KAF 文件的 Python 解析器( ) lxml:python中处理xml的库Alpino 解析器: : 安装将存储库克隆到您的本地机器,并将文件 core/alpino_parser.py 中的变量 ALPINO_HOME ...
habr_parser.py用于使用XPath(模块lxml )从Habr解析文章的脚本。 项目创建的。 lpucoznet_parser.py用于下载Linkin Park专辑的脚本。 minecraft_*.py有关Minecraft API的一些有趣的脚本。 music_rn
Untangle your web scraping complexities and access web data with ease using Python scripts Key FeaturesHands-on recipes to advance your web scraping skills to expert levelAddress complex and ...
lxml-基于C库libxml2和libxslt的快速XML解析器OptionParser-用于解析命令行选项的灵活库psycopg2-用于postgresql的数据库连接器。 警告:还需要在路径中安装和配置Visual Studio 此外,需要两个XML文件。 一个是要...
yum install python-lxml pyliblzma python-argparse 用法 首先,您需要获取将被解析的 HTML 页面。 您可以使用浏览器下载它们,也可以使用蜘蛛,任何适合您的都可以。 然后你可以解析它们。 基本用法 ./main.py ...
前几天遇到一个问题,需要把网页中的一部分内容挑出来,于是找到了urllib和HTMLParser两个库.urllib可以将网页爬下来,然后交由HTMLParser解析,初次使用这个库,在查官方文档时也遇到了一些问题,在这里写下来与大家分享....
soup = BeautifulSoup(<a></p>, html.parser) ### 只有起始标签的会自动补全,只有结束标签的会自动忽略 ### 结果为:<a></a> soup = BeautifulSoup(<a></p>, lxml) ### 结果为:<html><body><a></a><...
一个 python 脚本,用于检查 JNE 快递的价格并使用您的空运提单代码跟踪您的包裹。 只需运行python jne.py ,你就会知道这件事是如何工作的。 首先,你需要一个api_key和用户名来使用这个东西,或者你想做一些...
提取电话号码提取名称提取地址提取等级提取rating_count安装画中画以在Python中安装以下软件包( ) Python请求,以发出请求并下载页面HTML内容( ) Python LXML,用于使用Xpath解析HTML树结构(在此处了解如何...
from email.parser import Parser from email.header import decode_header from email.utils import parseaddr from lxml import etree 然后进行链接 name_list = [] email = 'xxx@xx.com' password = 'xxxxxx' ...
一些使用jusText的库: 当前(2020年1月)的一些替代方案: html2text 铭文 报纸 python可读性 fil丝 安装 确保您已安装Python 2.7 + / 3.4 +和pip ( Windows , Linux )。 简单运行: $ [sudo] pip install ...
使用 Python 3 编写的不清真站点生成器。 参见左侧栏 。 需要的依赖: Python 3 (>= 3.7) Python Markdown Pygments (用于提供代码高亮) css-html-js-minify (压缩 HTML 源码) Beautiful Soup 4 lxml sitegen.py ...
Technomarin刮板Technomarin scraper是用Python编写的脚本,可从刮取并保存有关制造商及其商品的信息。要求python 3.x xml文件入门安装依赖项: pip install -r requirements运行脚本: python main.py选项-h, --...
屏幕截图 本地构建和运行依存关系要运行Flow-dashboard,您将需要安装以下软件: Python 3 GTK + 3 适用于python 3的lxml 跑安装完上述依赖项后,只需执行以下操作: python3 ./src/main.py使用Docker构建和运行构建...