你知道的Python数据解析有几种方式?

本文介绍了Python中三种常见的数据解析方法:正则表达式、XPath和BeautifulSoup。正则用于基本匹配,XPath在XML文档中遍历元素和属性,BeautifulSoup提供导航和搜索功能,便于HTML和XML解析。文中详细阐述了每种方法的简介、安装和基本用法。
摘要由CSDN通过智能技术生成

答案是一共有三种:
1正则表达式解析
2Xpath解析
3BeautifulSoup

一,正则表达式解析

在爬虫中,下面两种方式用的多一些~

大致用法:

pattern = re.compile('<dd>.*?board-index.*?>(\d+)</i>.*?src="(.*?)".*?name"><a'
                     +'.*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p>'
                     +'.*?integer">(.*?)</i>.*?fraction">(.*?)</i>.*?</dd>', re.S)
items = re.findall(pattern, html)

二,Xpath解析

简介及安装

简介:XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 都构建于 XPath 表达之上。

安装:pip install lxml

调用方法:

# 先导包
from lxml import etree

# 将html文档或者xml文档转换成一个etree对象,然后调用对象中的方法查找指定的节点
# 1. 本地文件
tree = etree.parse(文件名)
tree.xpath("xpath表达式")

# 2. 网络数据
tree = etree.HTML(网页内容字符串)
tree.xpath("xpath表达式")

语法简介

先准备一个HTML格式的字符串
1,选取节点

nodename     # 选取nodename节点的所有子节点         xpath(‘//div’)         # 选取了所有div节点
/            # 从根节点选取                        xpath(‘/div’)          # 从根节点上选取div节点
//           # 选取所有的当前节点,不考虑他们的位置    xpath(‘//div’)         # 选取所有的div节点
.            # 选取当前节点                        xpath(‘./div’)         # 选取当前节点下的div节点
..           # 选取当前节点的父节点                 xpath(‘..’)            # 回到上一个节点
@            # 选取属性                           xpath(’//@calss’)     # 选取所有的class属性

#######################⬇例子⬇######################

ret=selector.xpath("//div")
ret=selector.xpath("/div")
ret=selector.xpath("./div")
ret=selector.xpath("//p[@id='p1']")
ret=selector.xpath("//div[@class='d1']/div/p[@class='story']")

2,谓语

表达式                                         结果
xpath(/body/div[1])                     # 选取body下的第一个div节点
xpath(/body/div[last()])                # 选取body下最后一个div节点
xpath(/body/div[last()-1])              # 选取body下倒数第二个div节点
xpath(/body/div[positon()<3])           # 选取body下前两个div节点
xpath(/body/div[@class])                # 选取body下带有class属性的div节点
xpath(/body/div[@class=”main”])         # 选取body下class属性为main的div节点
xpath(/body/div[@price>35.00])          # 选取body下price元素值大于35的div节点

#######################⬇例子⬇######################

ret=selector.xpath("//p[@class='story']//a[2]")
ret
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值