正则表达式、xpath、BeautifulSoup和JSONPath的区别?

作者&投稿:军咏 (若有异议请与网页底部的电邮联系)
python中的beautifulsoup和xpath有什么异同点~

一开始学的是bs,当时就有遇到一些class提取不到的情况,不知道别人有没有遇到。后面学到scrapy,里面虽然可以自己导入喜欢的选择器(bs或其他),自带的也有css选择器和xpath选择器,不过感觉和平时用的bs有些不同,用起来不太顺手。所以就学了xpath,后面习惯了以后感觉xpath更加灵活和方便(很多人都说用它提取比bs快,因为xpayh是用C需语言所写,我没测试过,不太清楚两者的差距。)直到现在,不用框架也用xpath了,主要是方便和习惯。而刚学我还是建议bs,因为简单,初学的教程也没有见过谁用xpath来教的。以上是个人之言,不一定全对,权当参考。

beautiful soup可以离线解释html文件,但是获取html文件是由用户的其他行为的定义的,比如urllib或者request

而scrapy是一个完整的获取程序,只需要把网址贴上去,就会自动去爬。 省去很多用户需要关注的细节。

1.正则表达式是进行内容匹配,将符合要求的内容全部获取;xpath()能将字符串转化为标签,它会检测字符串内容是否为标签,但是不能检
测出内容是否为真的标签;Beautifulsoup是Python的一个第三方库,它的作用和 xpath 作用一样,都是用来解析html数据的相比之下,
xpath的速度会快一点,因为xpath底层是用c来实现的
2.三者语法不同,正则表达式使用元字符,将所有获得内容与匹配条件进行匹配,而xpath和bs4将获取的解析后的源码进行按条件筛选,筛选
出想要的标签即根据标签属性来找到指定的标签,之后对标签进行对应内容获取。

从处理内容角度和实现语言来说:

  • 正则表达式:

    • 处理内容:去查找或替换符合特定规则的字符串

    • 实现语言:不是一种语言,而是一种通用的技术,规范

      • 有很多编程语言和工具都支持

        • 比如

          • Python的re

          • VSCode中的查找和替换

          • 等等

  • xpath:

    • 处理内容:匹配html/xml中的元素

    • 实现语言:不是一种语言,而是一种通用的技术,规范

      • 很多编程语言和工具都支持

        • 比如

          • Python中的libxml2

          • Chrome的开发者工具

          • 等等

  • BeautifulSoup:

    • 处理内容:处理html或xml,查找/替换等操作

    • 实现语言:属于Python的一个处理html/xml的解析库

  • JSONPath:

    • 处理内容:把(json格式的)字符串转换为json对象

    • 实现语言:属于Java的一个json库


我的相关教程,供参考:

  • 正则

应用广泛的超强搜索:正则表达式

正则表达式应用举例

Python中正则表达式:re模块详解


  • XPath

XPath知识总结


吐槽:百度知道的编辑器,真心垃圾,连有序列表的缩进和插入链接都不能很好的支持。




20分求foxpro6.0函数命令表
【格式】FILE(<cExp>) 【功能】根据cExp串中指定路径查找文件,如未指定路径,则在默认目录中查找。文件存在,返回逻辑真(.T.) 值,否则为逻辑假(.F.)值。 3.条件测试函数IIF( ) 【格式】IIF(<lExp >,<eExp 1>,<eExp2>) 【功能】逻辑表达式lExp值为真(.T.),返回表达式eExp1的值,否则返回表达式eExp...

求Visual Foxpro常用函数
【格式】AT(<cExp1>,< cExp 2>)【功能】返回串cExp1在串cExp2中的起始位置。函数值为整数。如果串cExp2不包含串cExp1,函数返回值为零。2.取左子串函数LEFT( )【格式】LEFT(<cExp>,<nExp>)【功能】返回从cExp串中第一个字符开始,截取nExp个字符的子串。3.取右子串函数RIGHT( )...

VFP编程几个基本函数的意义
日期时间函数是处理日期型或日期时间型数据的函数。其自变量为日期型表达式dExp或日期时间型表达式tExp。 1.系统日期函数DATE( ) 【格式】DATE() 【功能】返回当前系统日期,此日期由Windows系统设置。函数值为D型。 2.系统时间函数TIME( ) 【格式】TIME([<nExp>]) 【功能】返回当前系统时间,时间显示格式为hh:...

高坪区15178274475: xpath中可以插入正则表达式吗 -
窦时灵孢: //*[starts-with(@id, "postmessage_")] 或者 doc.xpath(r'//*[re:match(@id, "postmessage_\d+")]', namespaces={"re": xslt.org/regular-expressions"})

高坪区15178274475: 正则表达式 !\\^\\.\\*\\$!([^!]+)! 是什么意思 -
窦时灵孢: 在java中要进行转义,所以转化成标准正则表达式后就是“ !\^\.\*\$!([^!]+)!” 正则表达式中\^ 表示就是^的本身的意思,\. \$ ,同理得知;所以最后你的表达式表示!^.$! 开头后面跟任意非!的字符串重复一次到无穷次,然后以!结束.例如:1321312!^.$! 123!123123. 如果想让字符串只能是!^.$! 123! ,两边没有其他字符的, 那么在你正则的首加上^尾加上$.

高坪区15178274475: 正则表达式是什么? -
窦时灵孢: 正则表达式,又称正规表示法、常规表示法.正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本.许多程序设计语言都支持利用正则表达式进行字符串操作.例如,在Perl中就内建了一个功能强大的正则表达式引擎.正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的.

高坪区15178274475: 正则表达式是什么?
窦时灵孢: 正则表达式,就是用某种模式去匹配一类字符串的一个公式. 正则表达式由一些普通字符和一些元字符(metacharacters)组成.普通字符包括大小写的字母和数字,而元字符则具有特殊的含义 如: *表明+前的字符可以没有或者出现任意多次 +表明+前的字符至少出现一次 \s表明空格、换行、回车、tab等 ()表明一个组,group的意思 \"这里的\其实是转义符 |表明或者 \S 与\s是相反的意思,也就是除了\s以外的字符

高坪区15178274475: 正则表达式 -
窦时灵孢: 正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念.正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本.许多程序设计语言都支持利用正则表达式进行字符串操作.例如,在Perl中就内建了一个功能强大的正则表达式引擎.正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的.正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen.

高坪区15178274475: 什么是正则表达式 -
窦时灵孢: 一个正则表达式,就是用某种模式去匹配一类字符串的一个公式. 用于特定的字符格式检测: 详见: http://baike.baidu.com/view/94238.htm

高坪区15178274475: 什么是正则表达式?
窦时灵孢: 算法的...(蛮难的),下面只是网上入门级的,参考一下 在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要.正则表达式就是用于描述这些规则的工具.换句话说,正则表达式就是记录文本规则的代码. ...

高坪区15178274475: 如何使用正则表达式 -
窦时灵孢: ^QTP使用正则表达式有2种方式,一种是在“常量值选项”对话框或“参数选项”对话框的“值”框中输入字符串的正则表达式语法,可以定义正则表达式.选中“正则表达式”复选框,以指示QuickTest将该值作为正则表达式处理. 另一种是...

高坪区15178274475: Linux命令行大全:什么是正则表达式 -
窦时灵孢: 前面我们已经接触过命令行提供的许多特性和工具,并且也遇到过一些相当神秘的shell特性及命令,比如shell扩展和引用、键盘快捷键和命令历史记录等,更不用提vi编辑器了.正则表达式也延续了这种传统,而且可以说是众多特性中最神秘的一个(该说法应该会持有争议).当然,并不是说这些特性不值得大家花时间去学习.恰恰相反,熟练掌握这些用法会给人意想不到的效果,尽管它们的全部价值可能不会立即体现出来.

高坪区15178274475: 什么是正则表达式,怎样运用,在什么时候运用, -
窦时灵孢: 正则表达式是用来匹配固定字符串格式的.比如规定一个字符串中,只能是数字,只能是字母,或者只能是数字,字母和下划线( _ )的组合.甚至,只能有3个数字,后面跟2个字母...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网