Python大数据之使用lxml库解析html网页文件示例


Posted in Python onNovember 16, 2019

本文实例讲述了Python大数据之使用lxml库解析html网页文件。分享给大家供大家参考,具体如下:

lxml是Python的一个html/xml解析并建立dom的库,lxml的特点是功能强大,性能也不错,xml包含了ElementTree ,html5lib ,beautfulsoup 等库。

使用lxml前注意事项:先确保html经过了utf-8解码,即code =html.decode('utf-8', 'ignore'),否则会出现解析出错情况。因为中文被编码成utf-8之后变成 '/u2541' 之类的形式,lxml一遇到 "/"就会认为其标签结束。

具体用法:元素节点操作

1、  解析HTMl建立DOM

from lxml import etree
dom = etree.HTML(html)

2、  查看dom中子元素的个数 len(dom)

3、  查看某节点的内容:etree.tostring(dom[0])

4、  获取节点的标签名称:dom[0].tag

5、  获取某节点的父节点:dom[0].getparent()

6、  获取某节点的属性节点的内容:dom[0].get("属性名称")

对xpath路径的支持:

XPath即为XML路径语言,是用一种类似目录树的方法来描述在XML文档中的路径。比如用"/"来作为上下层级间的分隔。第一个"/"表示文档的根节点(注意,不是指文档最外层的tag节点,而是指文档本身)。比如对于一个HTML文件来说,最外层的节点应该是"/html"。

xpath选取元素的方式:

1、  绝对路径,如page.xpath("/html/body/p"),它会找到body这个节点下所有的p标签

2、  相对路径,page.xpath("//p"),它会找到整个html代码里的所有p标签。

Python大数据之使用lxml库解析html网页文件示例

xpath筛选方式:

1、  选取元素时一个列表,可通过索引查找[n]

2、  通过属性值筛选元素p =page.xpath("//p[@style='font-size:200%']")

3、  如果没有属性可以通过text()(获取元素中文本)、position()(获取元素位置)、last()等进行筛选

Python大数据之使用lxml库解析html网页文件示例

获取属性值

dom.xpath(.//a/@href)

获取文本

dom.xpath(".//a/text()")

示例代码:

#!/usr/bin/python
# -*- coding:utf-8 -*-
from scrapy.spiders import Spider
from lxml import etree
from jredu.items import JreduItem
class JreduSpider(Spider):
  name = 'tt' #爬虫的名字,必须的,唯一的
  allowed_domains = ['sohu.com']
  start_urls = [
    'http://www.sohu.com'
  ]
  def parse(self, response):
    content = response.body.decode('utf-8')
    dom = etree.HTML(content)
    for ul in dom.xpath("//div[@class='focus-news-box']/div[@class='list16']/ul"):
      lis = ul.xpath("./li")
      for li in lis:
        item = JreduItem() #定义对象
        if ul.index(li) == 0:
          strong = li.xpath("./a/strong/text()")
          li.xpath("./a/@href")
          item['title']= strong[0]
          item['href'] = li.xpath("./a/@href")[0]
        else:
          la = li.xpath("./a[last()]/text()")
          item['title'] = la[0]
          item['href'] = li.xpath("./a[last()]/href")[0]
        yield item

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python的dict字典结构操作方法学习笔记
May 07 Python
Python中元组,列表,字典的区别
May 21 Python
python实现手机通讯录搜索功能
Feb 22 Python
Python 文本文件内容批量抽取实例
Dec 10 Python
python调用java的jar包方法
Dec 15 Python
对python 多个分隔符split 的实例详解
Dec 20 Python
python3发送request请求及查看返回结果实例
Apr 30 Python
Python3爬虫中关于中文分词的详解
Jul 29 Python
Python使用lambda抛出异常实现方法解析
Aug 20 Python
详解python模块pychartdir安装及导入问题
Oct 22 Python
python tkinter的消息框模块(messagebox,simpledialog)
Nov 07 Python
matplotlib对象拾取事件处理的实现
Jan 14 Python
Python大数据之从网页上爬取数据的方法详解
Nov 16 #Python
简单了解Pandas缺失值处理方法
Nov 16 #Python
python selenium 执行完毕关闭chromedriver进程示例
Nov 15 #Python
浅谈Django2.0 加xadmin踩的坑
Nov 15 #Python
Django 实现xadmin后台菜单改为中文
Nov 15 #Python
django使用xadmin的全局配置详解
Nov 15 #Python
在django-xadmin中APScheduler的启动初始化实例
Nov 15 #Python
You might like
比较时间段一与时间段二是否有交集的php函数
2011/05/31 PHP
php数组中删除元素的实现代码
2012/06/22 PHP
php求正负数数组中连续元素最大值示例
2014/04/11 PHP
PHP实现15位身份证号转18位的方法分析
2019/10/16 PHP
Javascript select控件操作大全(新增、修改、删除、选中、清空、判断存在等)
2008/12/19 Javascript
jquery 单击li防止重复加载的实现代码
2010/12/24 Javascript
jQuery 无刷新分页实例代码
2013/11/12 Javascript
js截取固定长度的中英文字符的简单实例
2013/11/22 Javascript
JQuery中使文本框获得焦点的方法实例分析
2015/02/28 Javascript
javascript实现复选框全选或反选
2017/02/04 Javascript
jQuery源码分析之sizzle选择器详解
2017/02/13 Javascript
基于Node.js的WebSocket通信实现
2017/03/11 Javascript
vue.js在标签属性中插入变量参数的方法
2018/03/06 Javascript
Vue面试题及Vue知识点整理
2018/10/07 Javascript
[05:05]第三天的dota2
2013/07/29 DOTA
[01:08:00]Fnatic vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python3使用tkinter实现ui界面简单实例
2014/01/10 Python
python基础教程之获取本机ip数据包示例
2014/02/10 Python
python开发之字符串string操作方法实例详解
2015/11/12 Python
Python3中的列表,元组,字典,字符串相关知识小结
2017/11/10 Python
Python查找文件中包含中文的行方法
2018/12/19 Python
python tkinter实现屏保程序
2019/07/30 Python
深入浅析Python科学计算库Scipy及安装步骤
2019/10/12 Python
python实现删除列表中某个元素的3种方法
2020/01/15 Python
GafasWorld哥伦比亚:网上购买眼镜
2017/11/28 全球购物
罗兰·穆雷官网:Roland Mouret
2018/09/28 全球购物
大学生就业推荐信范文
2013/11/29 职场文书
医院总经理岗位职责
2014/02/04 职场文书
中等生评语大全
2014/05/04 职场文书
化妆品活动策划方案
2014/05/23 职场文书
2014社区健康教育工作总结
2014/12/16 职场文书
2016春节慰问信范文
2015/03/25 职场文书
机修车间主任岗位职责
2015/04/08 职场文书
2015年推普周活动方案
2015/05/06 职场文书
立秋之描写立秋的作文(五年级)
2019/08/08 职场文书
ubuntu下常用apt命令介绍
2022/06/05 Servers