使用lxml+xpath解析html页面
2018-02-04 07:13
429 查看
@待解析的页面
@解析获得元素树etree
@根据具体业务寻找元素内容
<!DOCTYPE html> <html lang="en"> <title>Title</title> <body> <h1> This is h1 </h1> <div> This is fisrt div <div>劳资是1.1</div> </div> <div id="divid"> <img src="1111.png"/> <span id="sp1"> desc 1111.png </span> <img src="2222.png"/> <span id="sp2"> desc 2222.png </span> <p> <a href="http://www.xxxxx.com/"> link-of-xxxxxx </a> </p> <a href="http://www.yyyyyyy.com/"> link-of-yyyyyyyyy </a> <br/> <a href="http://www.zzzzzzz.com/"> link-of-zzzzzzzzz </a> </div> <p class="p_classname"> This is p with class name </p> <div class="div_classname"> This is div with class name <div>劳资是3.1</div> </div> </body> </html>
@解析获得元素树etree
# 生成元素树etree html = etree.HTML(page_text) # 解析文本 html = etree.parse("./page.html") # 解析文件 print(type(html)) # <class 'lxml.etree._ElementTree'> print(etree.tostring(html, pretty_print=True)) # 整理格式
@根据具体业务寻找元素内容
# 找出所有div元素,列表 ''' obj = html.xpath('//div') # print(obj) print(type(obj[0])) for i in obj: print(i) ''' # 所有拥有id属性的div元素集合,列表 ''' element_list = html.xpath('//div[@id]') print(element_list) print(element_list[0]) ''' # 所有class属性为div_classname的div元素列表 ''' element_list = html.xpath("//div[@class='div_classname']") print(element_list) ''' # 所有属性非空的div元素列表 ''' element_list = html.xpath("//div[@*]") print(element_list) ''' # 所有属性【为空】的div元素列表(对非空表述取反) ''' element_list = html.xpath("//div[not(@*)]") print(element_list) ''' # 最后一个div元素,类型列表 ''' element_list = html.xpath("//div[last()]") print(element_list) ''' # 倒数第2个div元素,类型列表 ''' element_list = html.xpath("//div[last()-1]") print(element_list) ''' # 最前面2个的div元素 ''' element_list = html.xpath("//div[position() < 3]") print(element_list) ''' # 所有a标签的href属性值,列表 ''' element_list = html.xpath("//a/@href") # print(element_list) for i in element_list: print(i) print(type(i)) ''' # 第2个div标签下一层所有a的href属性值,列表 ''' element_list = html.xpath("//div[2]/a/@href") print(element_list) ''' # 第2个div标签以下以下所有层面a的href属性值 ''' element_list = html.xpath("//div[2]//a/@href") print(element_list) ''' # 第2个div标签下第1个span的id属性值 ''' element_list = html.xpath("//div[2]/span[1]/@id") print(element_list) ''' # 【所有div元素】及【所有p元素】 # 顺序是完全自上而下的,找到div就是div,找到p就是p ''' element_list = html.xpath("//div | //p") print(element_list) for e in element_list: print(e) ''' # 最后一个div元素的所有一级子div的文本列表 ''' ret = html.xpath("//div[last()]/div/text()") print(ret) '''
相关文章推荐
- python 使用lxml解析html(xpath)
- Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
- 使用Jsoup解析HTML页面
- iPhone:使用hpple解析html,Xpath导航
- 使用XPath解析html
- VC++如何使用微软提供的Mshtml库解析html页面元素
- 使用XPath解析HTML获取网页内容
- 使用jsoup解析html页面内容案例
- Android开发系列十:使用Jsoup解析HTML页面
- Android开发系列十:使用Jsoup解析HTML页面
- C# HTML解析工具HtmlAgilityPack使用实例(二)--Web页面
- 使用Perl的HTML::TreeBuilder::XPath来解析网页内容
- java 使用xpath解析xml和html
- crawler4j抓取页面使用jsoup解析html时的解决方法
- 使用Jsoup解析HTML页面
- Android开发系列十:使用Jsoup解析HTML页面
- Android开发--使用JSOUP解析HTML页面
- 使用python的lxml解析html
- 使用jsoup解析html页面
- 使用Jsoup解析HTML页面