02 Python四大数据类型总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了02 Python四大数据类型总结相关的知识,希望对你有一定的参考价值。

参考技术A Python的四大基本数据类型:数值型、容器型、字符串、自定义类型。

int整型对象、float浮点型、bool逻辑对象。

可容纳多个元素的容器对象,常用的有:list、tuple、dict、set。

去掉列表中的一个最小值和一个最大值后,计算剩余元素的平均值。

Python中没有字符类型(char),所有的字符或者字符串都被统一为str对象。
str类型的常用方法:

密码安全要求:

Python 使用关键字 class 定制自己的类,self 表示类实例对象本身。
一个自定义类内部包括属性和方法,其中有些方法是自带的。

有些地方称以上方法为魔法方法,它们与创建类时自定义个性化行为有关。比如:

注意:

同理,方法前加 2 个 _ 后,方法变为“私有方法”,只能在 Dog 类内被共享使用。

使用Python自带的@property类,就会优雅地将name变为只读属性。

如果要使name既可读又可写,就再增加一个装饰器@name.setter

Python网络爬虫四大选择器(正则表达式BS4XpathCSS)总结

前几天小编连续写了四篇关于Python选择器的文章,分别用正则表达式BeautifulSoupXpathCSS选择器分别抓取京东网的商品信息。今天小编来给大家总结一下这四个选择器,让大家更加深刻的理解和熟悉Python选择器。

一、正则表达式

正则表达式为我们提供了抓取数据的快捷方式。虽然该正则表达式更容易适应未来变化,但又存在难以构造、可读性差的问题。当在爬京东网的时候,正则表达式如下图所示:

技术图片

利用正则表达式实现对目标信息的精准采集

此外 ,我们都知道,网页时常会产生变更,导致网页中会发生一些微小的布局变化时,此时也会使得之前写好的正则表达式无法满足需求,而且还不太好调试。当需要匹配的内容有很多的时候,使用正则表达式提取目标信息会导致程序运行的速度减慢,需要消耗更多内存。

二、BeautifulSoup

BeautifulSoup是一个非常流行的 Pyhon 模块。该模块可以解析网页,并提供定位内容的便捷接口。通过‘pip install beautifulsoup4‘就可以实现该模块的安装了。

技术图片

利用美丽的汤去提取目标信息

使用 BeautifulSoup的第一步是将己下载的 HTML 内容解析为 soup文档。由 于大多 数网 页都不具备良好的HTML 格式,因此BeautifulSoup需要对实际格式进行确定。BeautifulSoup能够正确解析缺失的引号并闭合标签,此外还会添加<html >和<body>标签使其成为完整的HTML文档。通常使用find() 和find_all()方法来定位我们需要的元素。如果你想了解BeautifulSoup全部方法和参数,可以查阅BeautifulSoup的官方文档。虽然BeautifulSoup在代码的理解上比正则表达式要复杂一些,但是其更加容易构造和理解。

三、Lxml

Lxml模块使用 C语言编写,其解析速度比 BeautiflSoup更快,而且其安装过程也更为复杂,在此小编就不赘述啦。XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。

技术图片

Xpath

使用 lxml 模块的第一步和BeautifulSoup一样,也是将有可能不合法的HTML 解析为 统一格式。 虽然Lxml可以正确解析属性两侧缺失的引号,并闭合标签,不过该模块没有额外添加<html >和<body>标签 。

在线复制Xpath表达式可以很方便的复制Xpath表达式。但是通过该方法得到的Xpath表达式放在程序中一般不能用,而且长的没法看。所以Xpath表达式一般还是要自己亲自上手。

四、CSS

CSS选择器表示选择元素所使用 的模式。BeautifulSoup整合了CSS选择器的语法和自身方便使用API。在网络爬虫的开发过程中,对于熟悉CSS选择器语法的人,使用CSS选择器是个非常方便的方法。

技术图片

CSS选择器

下面是一些常用的选择器示例。

  • 选择所 有标签: *
  • 选择<a>标 签: a
  • 选择所有class=”link” 的元素: .l in k
  • 选择 class=”link” 的<a>标签: a.link
  • 选择 id= " home ” 的<a>标签: a Jhome
  • 选择父元素为<a>标签的所有< span>子标签: a > span
  • 选择<a>标签内部的所有<span>标签: a span
  • 选择title属性为” Home ” 的所有<a>标签: a [title=Home]

五、性能对比

lxml 和正则表达式模块都是C语言编写的,而BeautifulSoup则是纯Python 编写的。下表总结了每种抓取方法的优缺点。
技术图片

相对困难需要注意的是。lxml在内部实现中,实际上是将CSS选择器转换为等价的Xpath选择器。

六、总结

如果你的爬虫瓶颈是下载网页,而不是抽取数据的话,那么使用较慢的方法(如BeautifulSoup) 也不成问题。如果只需抓取少量数据,并且想要避免额外依赖的话,那么正则表达式可能更加适合。不过,通常情况下,l xml是抓取数据的最好选择,这是因为该方法既快速又健壮,而正则表达式和BeautifulSoup只在某些特定场景下有用。

技术图片
想学习更多Python网络爬虫与数据挖掘知识,可前往专业网站:http://pdcfighting.com/



以上是关于02 Python四大数据类型总结的主要内容,如果未能解决你的问题,请参考以下文章

python中必须要会的四大高级数据类型(字符,元组,列表,字典)

python开发之路-day02

02 MongoDB数据类型重要概念以及shell常用指令

基于全基因组测序数据鉴定结构变异的四大类算法总结

一文了解NoSQL的四大数据库类别

Python基础学习记录02