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字符串连接方式汇总
Aug 21 Python
使用Python生成随机密码的示例分享
Feb 18 Python
Python yield 使用方法浅析
May 20 Python
python tkinter界面居中显示的方法
Oct 11 Python
老生常谈python中的重载
Nov 11 Python
Python 存储字符串时节省空间的方法
Apr 23 Python
Python supervisor强大的进程管理工具的使用
Apr 24 Python
Python简易版图书管理系统
Aug 12 Python
Python数据可视化 pyecharts实现各种统计图表过程详解
Aug 15 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
Feb 11 Python
Python openpyxl 插入折线图实例
Apr 17 Python
Python中使用tkFileDialog实现文件选择、保存和路径选择
May 20 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
ThinkPHP中I(),U(),$this->post()等函数用法
2014/11/22 PHP
实现PHP+Mysql无限分类的方法汇总
2015/03/02 PHP
js prototype 格式化数字 By shawl.qiu
2007/04/02 Javascript
如何将一个String和多个String值进行比较思路分析
2013/04/22 Javascript
JS控制图片翻转示例代码(兼容firefox,ie,chrome)
2013/12/19 Javascript
Jquery中的层次选择器与find()的区别示例介绍
2014/02/20 Javascript
jquery制作图片时钟特效
2020/03/30 Javascript
举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历
2016/07/07 Javascript
前端开发必知的15个jQuery小技巧
2017/01/22 Javascript
vue如何引用其他组件(css和js)
2017/04/13 Javascript
详解windows下vue-cli及webpack 构建网站(三)使用组件
2017/06/17 Javascript
react-router browserHistory刷新页面404问题解决方法
2017/12/29 Javascript
Vue2.0 http请求以及loading展示实例
2018/03/06 Javascript
JavaScript实现的3D旋转魔方动画效果实例代码
2019/07/31 Javascript
浅谈JS中this在各个场景下的指向
2019/08/14 Javascript
使用Layer组件弹出多个对话框(非嵌套)与关闭及刷新的例子
2019/09/25 Javascript
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
[49:27]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第一场
2018/04/05 DOTA
wxPython窗口的继承机制实例分析
2014/09/28 Python
浅谈python3发送post请求参数为空的情况
2018/12/28 Python
Python+selenium点击网页上指定坐标的实例
2019/07/05 Python
python使用socket实现的传输demo示例【基于TCP协议】
2019/09/24 Python
python使用 request 发送表单数据操作示例
2019/09/25 Python
Python稀疏矩阵及参数保存代码实现
2020/04/18 Python
python+appium+yaml移动端自动化测试框架实现详解
2020/11/24 Python
一款利用css3的鼠标经过动画显示详情特效的实例教程
2014/12/29 HTML / CSS
Lookfantastic日本官网:英国知名护肤、化妆品和头发护理购物网站
2018/04/21 全球购物
英国领先的隐形眼镜在线供应商:Lenstore.co.uk
2019/11/24 全球购物
Tea Collection官网:一家位于旧金山的童装公司
2020/08/07 全球购物
匡威俄罗斯官网:Converse俄罗斯
2020/05/09 全球购物
交通事故调解协议书
2014/04/16 职场文书
中国梦演讲稿教师篇
2014/04/23 职场文书
音乐节策划方案
2014/06/09 职场文书
党员评议思想汇报
2014/10/08 职场文书
门面房租房协议书
2014/12/01 职场文书
Python实现抖音热搜定时爬取功能
2022/03/16 Python