大数据:lxml解析html文件(网页)
来源:互联网 发布:数据库迁移解决方案 编辑:程序博客网 时间:2024/06/13 04:59
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标签。
xpath筛选方式:
1、 选取元素时一个列表,可通过索引查找[n]
2、 通过属性值筛选元素p =page.xpath("//p[@style='font-size:200%']")
3、 如果没有属性可以通过text()(获取元素中文本)、position()(获取元素位置)、last()等进行筛选
获取属性值
dom.xpath(“.//a/@href”)
获取文本
dom.xpath(“.//a/text()”)
示例代码:#!/usr/bin/python# -*- coding:utf-8 -*-from scrapy.spiders import Spiderfrom lxml import etreefrom jredu.items import JreduItemclass 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
- 大数据:lxml解析html文件(网页)
- 使用lxml解析HTML数据
- python+lxml解析大XML文件(100M+)
- python 使用lxml解析html(xpath)
- 用lxml解析HTML
- Python+lxml解析html
- 用lxml解析HTML
- lxml解析xml文件
- 安装lxml,抓取、解析网页
- 一个网页抽取的错误(使用lxml.html.document_fromstring)
- 将网页的解析数据存储为html文件
- Python:用lxml解析HTML
- 【简记】用lxml解析html
- 通过html解析网页数据
- 使用python的lxml解析html
- python lxml库etree解析html
- lxml解析html时,检验XPath
- Python使用lxml解析HTML response
- Fat Jar Eclipse Plug-In(eclipse导出jar包)
- [poj2104]K-th Number 主席树
- mysql行转列
- BufferedWriter 和 BufferedReader通过流读取文件里的内容
- 快速入门面向对象设计
- 大数据:lxml解析html文件(网页)
- LSD-SLAM(2)关于tracking线程的目标函数的推导
- Myeclipse中struts.xml无提示解决方法
- Android——查看自己项目有多少行代码
- xml转json的两种方法
- JDK 7中的函数式编程思想
- OSI七层网络模型 TCP/IP 三次握手 四次挥手
- 推荐一款免费好用的Java反编译工具Java Decompiler
- 学习mybatis链接