一天一篇Python库
文章平均质量分 86
李元静
专注移动开发10年,对Android、鸿蒙、Python以及Flutter均有涉猎。最近更新Python爬虫与鸿蒙专栏,著有《Flutter App开发从入门到实战》一书,感兴趣的读者加微极客学编程,实时掌握博主的更新动态。
展开
-
Python爬虫:通过Selenium库学习如何爬取京东畅销排行榜书籍
目录Selenium库基本用法查找节点查找单个节点Selenium库前面,我们分析的都是简单的网页直接加载所得的结果。也就是说,通过requests库请求的网页数据都是存在的。但是,现实并不总是如此,有很多大型的网站其网页的数据都是通过javascript执行后获取的,如果需要常规处理爬虫,我们需要分析JavaScript代码。但即使你分析出来了,也可能有大量的数据是经过加密处理的,有时候很难找到解析的规律,这个时候想要抓取数据,就必须等待浏览器加载完成之后获取。而要得到所见即所得的网页数据,就必原创 2021-07-30 19:36:54 · 4348 阅读 · 15 评论 -
Python爬虫:还在纠结买什么手机?pyquery库给你参考答案
目录pyquery库基本用法CSS选择器查找节点查找子节点查找父节点查找其兄弟节点获取节点信息修改节点伪类选择器实战:抓取京东手机销量排行榜pyquery库虽然Beautiful Soup库的功能非常强大,但CSS选择器功能有些弱,至少对于pyquery库来说是非常弱的。而且pyquery库并不是Python的标准库,所以在使用pyquery库之前需要安装,示例命令如下所示:pip install pyquery安装完成之后,我们就可以愉快的玩耍pyquery库了。需要注意的是,后面的所有解析代原创 2021-07-26 18:31:36 · 5525 阅读 · 43 评论 -
Python爬虫:想听榜单歌曲?使用BeautifulSoup库只需要14行代码即可搞定
目录BeautifulSoup库安装BeautifulSoup库BeautifulSoup库简介选择解释器基础用法节点选择器获取节点名称属性内容获取所有子节点获取所有子孙节点父节点与兄弟节点方法选择器find_all()方法BeautifulSoup库虽然说XPath比正则表达式用起来方便,但是没有最方便,只有更方便。我们的BeautifulSoup库就能做到更方便的爬取想要的东西。安装BeautifulSoup库使用之前,还是老规矩,先安装BeautifulSoup库,指令如下:pip inst原创 2021-07-23 18:20:16 · 2187 阅读 · 26 评论 -
Python爬虫:通过爬取CSDN博客信息,学习lxml库与XPath语法
目录lxml库lxml基本用法解析XML文件解析HTML文件XPath什么是XPathXPath语法XPath实战选取此节点的所有子孙节点选取此节点的所有子节点lxml库lxml是Python的一个解析库,专门用于解析XML与HTML,支持XPath解析方式。由于lxml库的底层是使用C语言编写的,所以其解析效率非常的高。在我们后面讲解使用该库之前,我们需要安装该库。一般通过如下命令进行安装即可,代码如下:pip install lxmllxml基本用法既然,lxml库支持解析XML以及HTM原创 2021-07-21 18:08:45 · 2782 阅读 · 23 评论 -
Python爬虫:自动评论何须学完爬虫,只需要掌握requests库即可
目录网络库requests发送HTTP请求GET请求POST请求抓取二进制图片网络库requests其实,我们有专门的网络库进行直接的网络请求与处理,它就是requests库。在我们开始讲解与使用之前,需要通过如下命令进行安装:pip install requests首先,我们先来看看requests库可以进行哪些操作:发送HTTP请求设置HTTP请求头响应数据处理Cookie使用代理超时处理上传文件维持会话身份验证打包请求SSL证书验证下面,我们来一一介绍这些操作具体原创 2021-07-19 18:29:29 · 4419 阅读 · 348 评论 -
Python爬虫:urllib3与urllib到底有何区别?内行人告诉你答案
目录网络库urllib3网络请求GET请求POST请求HTTP响应头网络库urllib3urllib3是比urllib库更强大的存在,目前已经有许多的原生系统已经开始使用urllib3。urllib3具有如下优点:支持HTTP和SOCKS代理支持压缩编码100%测试覆盖率具有链接池线程安全客户端SLL/TLS验证协助处理重复请求和HTTP重定位使用multipart编码上传文件因为urllib3并不是Python的标准库,所以我们使用之前,需要进行下载安装,具体命令如下所示:p原创 2021-07-16 18:28:27 · 6338 阅读 · 41 评论 -
Python爬虫:史上最详细的Python爬虫库urllib讲解,绝对经典,值得收藏
目录网络库urllibrequest发送GET请求发送POST请求请求超时处理爬虫伪装Parse中文的编码与解码网络库urlliburllib库是Python3内置的HTTP请求库,不需要单独安装,默认下载的Python就已经包含了该库。urllib库有4个模块:request:最基本的HTTP请求模块,可以用法发送HTTP请求,并接收服务器的响应数据,这个过程就像在浏览器地址栏输入URL一样。parse:工具模块,提供了很多处理URL的API,如拆分、解析、合并等。robotparser:用原创 2021-07-14 18:42:56 · 3992 阅读 · 18 评论 -
Python:学习Numpy,收藏这一篇文章就Go了
目录Numpy生成Numpy数组从已有数据中创建数组通过random生成数组创建多维数组arange与linspace生成数组NumpyNumpy全称Numerical Python。它提供了2种基本的对象:ndarray与ufunc。ndarray是存储单一数据的多维数组,它相对于list列表可以快速的节省空间,提供数组化的算数运算和高级的广播功能。ufunc是能够对数组进行处理的函数,这些标准的数学函数对整个数组的数据进行快速运算,且不需要编写循环。Numpy其他优点:它是读取/写入磁盘上原创 2021-07-12 19:02:45 · 1806 阅读 · 39 评论 -
Python数据结构与算法(10)---二进制数据结构Struct
目录前言前言在C/C++语言中,struct被称为结构体。而在Python中,struct是一个专门的库,用于处理字节串与原生Python数据结构类型之间的转换。原创 2021-06-14 19:12:50 · 18087 阅读 · 15 评论 -
socket库:Python实现组播与发送二进制数据
目录前言前言点对点连接可以处理很多通信需求,不过随着直接连接数的增加,在多对通信方之间传递相同的消息会变得越来越困难。单独地向各个接收方发送消息会耗费额外的处理时间和带宽,这对于诸如完成流视频或音频操作的应用来说会代码显著的性能问题。而使用组播(multicast)向多个端点同时发送消息可以得到更好的效率,因为网络基础设施可以确保数据包会被传送到所有接收方。组播消息总是使用UDP发送,因为TCP需要提供一对通信系统。组播的地址被称为组播组,这是常规的IPv4地址范围的一个子集(224.0.0.0~原创 2021-06-11 18:41:07 · 3097 阅读 · 15 评论 -
socket库:Python实现UDP客户和服务器通信
目录前言服务器代码客户端代码前言前文使用TCP面向流的套接字,今天讲解的UDP的工作方式与TCP/IP不同。UDP是用户数据报协议,是一个面向消息的协议。一方面,UDP不需要一个长期活动连接,所以建立UDP套接字稍微简单一些。另一方面,UDP消息必须放在一个数据报中。在IPv4中,数据报包含65507个字节,这些字节信息中还包括首部信息。因为UDP不需要长期的连接,所以它无法得到TCP所能提供的传输保障。服务器代码因为UDP并没有连接,所以服务器不需要监听和接收连接。它只需要使用bing()将其原创 2021-06-08 19:26:02 · 7250 阅读 · 9 评论 -
socket库:Python实现TCP/IP客户和服务器通信
目录前言简单的搭建服务器与客户端服务器客户端前言套接字除了前文用于分析网络地址等功能之外,还可以配置一个服务器,监听到来的消息。比如你在网络上跟网络机器人聊天,你发送数据到机器人(服务器),然后服务器反馈聊天数据信息给你。当然,机器人的回复还涉及机器学习,但简单的消息反馈涉及的就是套接字的知识。而且,如果你直接将服务器配置为连接到其他应用的客户端,那么双向通信也可以实现。(比如QQ聊天)简单的搭建服务器与客户端既然已经了解了套接字的应用。下面,我们来实现一个简单的单向通信TCP/IP服务器与客户原创 2021-06-04 18:39:07 · 4458 阅读 · 28 评论 -
socket库:Python网络通信套接字
目录前言什么是套接字?地址簇套接字类型套接字的简单应用gethostbyname_ex()与gethostbyname()getservbyname()与getservbyport()前言socket库提供了一个底层C API,可以使用BSD套接字接口实现网络通信。它包括socket类,用于处理具体的数据通道,还包括用来完成网络相关任务的函数,如将一个服务器名转换为一个地址以及格式化数据以便在网络上发送。什么是套接字?套接字是程序在本地或者通过互联网来回传递数据时所用通信通道的一个端点。套接字有2原创 2021-06-03 19:24:19 · 2435 阅读 · 40 评论 -
hmac库:Python密码消息签名
目录前言消息签名二进制摘要前言HMAC算法可以用于验证信息的完整性,这些信息可能在应用之间传递,或者存储在一个可能有安全威胁的地方。其基本思路:生成实际数据的一个密码散列,并提供一个共享的秘密密钥。然后使用得到的散列检查所传输或存储的信息,以确定一个信任级别,而不传输秘密密钥。消息签名hmac库提供了一个new()函数来创建一个新对象来计算消息签名。示例如下:import hashlibimport hmacstr = 'Li YuanJing'hmac_maker = hmac.new原创 2021-05-29 19:47:16 · 1527 阅读 · 16 评论 -
hashlib库:Python的加密算法实践
目录前言MD5SHA1前言hashlib库定义了一个API来访问不同的密码散列算法。其底层由OpenSSL提供,所以OpenSSL库提供的所有算法都可以用,包括:MD5SHA1SHA224SHA256SHA384SHA512当然,这上面列举的只是其支持的一部分。真正全部支持的总类读者可以用过下面代码打印出来,示例如下:import hashlibprint(hashlib.algorithms_guaranteed)print(hashlib.algorithms_availa原创 2021-05-28 19:03:32 · 1155 阅读 · 7 评论 -
一天一篇Python库专栏目录
一天一篇Python专栏目录string库:Python的文本常量与字符串模板time库:Python的时间时钟处理datetime库:Python日期与时间值管理计算calendar库:Python日历的处理与生成textwrap库:Python格式化文本段落os.path库:Python操作和处理文件路径Pathlib库:Python面向对象的文件路径处理glob库:文件名的匹配[random库:Python随机数的生成与应用] (https://liyuanjinglyj.blog原创 2021-05-28 13:10:58 · 1313 阅读 · 0 评论 -
ipaddress库:Python中网络地址的处理
目录前言地址前言ipaddress库提供了处理IPv4与IPv6网络地址的类。这些类支持验证,查找网络上的地址和主机,以及其他常见的操作。本篇,将详细介绍Python中ipaddress库的使用规则。地址一般来说,我们使用ipaddress库是通过ip_address()函数构建一个地址对象。它会返回一个IPv4Address或IPv6Address实例。实例如下:import ipaddressimport binasciiaddresses = [ '121.63.3.59',原创 2021-05-18 20:15:50 · 4508 阅读 · 4 评论 -
multiprocessing库:Python像线程一样管理进程
目录前言创建一个进程前言multiprocessing库是基于threading API,它可以把工作划分为多个进程。有些情况下,multiprocessing可以作为临时替换取代threading来利用多个CPU内核,相应地避免Python全局解释器锁所带来的计算瓶颈。下面,我们来看看multiprocessing库创建进程与threading库有多像。创建一个进程要创建一个进程,最简单的方式是用一个目标函数实例化一个Process对象,然后与threading一样调用start()函数让它工作原创 2021-05-17 18:44:47 · 2668 阅读 · 6 评论 -
smtplib库:Python使用QQ邮箱发送邮件
目录前言发送email文本消息发送email图片与附件消息前言一般来说,每个App都有一个意见反馈功能。对于企业,其意见反馈自然是发送到其服务器上,而对于个人应用来说,因为使用的人相对较少,在初期推广的时候,可以将意见反馈设置成发送到自己邮箱,这样可以节约服务器的资源开销。而Python提供了smtplib库,其中SMTP类可以用来与邮件服务器通信发送邮件。发送email文本消息SMTP最常用的一种用法是连接到一个邮件服务器并发送一个邮件。这里我们需要分3步:我们需要将邮件服务器主机名和端口传原创 2021-05-15 18:40:42 · 8901 阅读 · 3 评论 -
threading库:Python线程锁与释放锁
目录前言前言原创 2021-05-13 18:34:35 · 4799 阅读 · 4 评论 -
threading库:Python线程的基础知识
目录前言前言前面的subprocess库主要讲解的是进程知识与进程间的交互。而进程有可以拥有多个线程,所以threading库提供了管理多个线程执行的API,允许程序在同一个进程空间并发地运行多个操作。本篇,将详细的介绍Python线程库:threading。...原创 2021-05-12 18:56:14 · 5452 阅读 · 3 评论 -
subprocess库:Python中创建附加进程
目录前言运行外部命令前言subprocess库提供了一个API创建子进程并与之通信。这对于运行生产或消费文本的程序尤其有好处,因为这个API支持通过新进行的标准输入和输出通道来回传数据。本篇,将详细介绍Python创建附加进行的库:subprocess。运行外部命令subprocess库本身可以替换os.system(),os.spawnv()等函数。现在我们来通过subprocess库运行一个外部命令,但不采用os.system()。示例如下:import subprocesscomple原创 2021-05-10 18:11:22 · 3737 阅读 · 4 评论 -
mmap库:Python内存映射文件操作
目录前言mmap()(读文件)write()(写文件)前言内存映射通常可以提高I/O的性能,因为使用内存映射时,不需要对每个访问都建立一个单独的系统调用,也不需要在缓冲区之间复制数据,内核和用户都能很方便的直接访问内存。本篇,将详细介绍Python内存映射库:mmap。mmap()(读文件)使用mmap()函数可以创建一个内存映射文件。该函数的第1个参数是一个文件描述符,可以通过file对象的fileno()函数获取;第2个参数是要映射的文件部分大小(单位字节),如果该值为0,映射整个文件,如果该原创 2021-05-08 18:08:39 · 7359 阅读 · 3 评论 -
fliecmp库:Python比较文件操作
目录前言生成示例文件cmp()(比较文件)cmpfiles()(比较一组文件)dircmp()(比较目录)left_list与right_list忽略部分文件进行对比其他属性前言对于文件的比较一般有几种,比如比较文件的内容,比较文件的大小,或者直接对比整个项目文件。特别是在项目的更新迭代中,可以通过该库来比较当前版本与之前版本有哪些文件不同。所以,本篇将详细讲解Python的文件比较库:filecmp。生成示例文件在比较文件之前,我们首先需要有用于比较的文件。所以,为了后面的测试,我们先来创建一些原创 2021-05-06 18:45:21 · 4510 阅读 · 1 评论 -
tempfile库:Python临时文件系统对象
目录前言前言原创 2021-05-03 19:49:00 · 5645 阅读 · 3 评论 -
shutil库:Python高级文件操作
目录前言copyfile()copy()与copy2()copymode()与copystat()复制整个文件夹参数copy_function参数ignore删除整个文件夹移动文件夹或文件查找文件归档压缩文件解压缩文件系统空间前言什么算是高层的文件操作呢?普通的文件操作,我们一般只涉及创建文件,文件夹以及写入文件等等。假如我现在需要复制一个文件的内容到另一个文件之中,用pathlib等都只能先打开复制文件,然后进行将其读出来保存,然后再写入新的文件,这种普通的复制操作,无形之中增加了许多步骤。而sh原创 2021-05-04 19:47:48 · 5463 阅读 · 4 评论 -
re库:Python中正则表达式的处理与应用
目录前言查找文本多重匹配前言re库就是我们常说的正则表达式库,它是用一种形式化语法来描述的文本匹配模式。通过该库,我们可以匹配特定字符串中的一些内容,比如爬取网页内容时,我们可以通过re库获取网页内容中的所有标签内容。本篇将详细讲解re库的使用规则。查找文本比如,在一串字符串文本中,我们需要查找一个子字符串是否在该字符串中,并返回其具体的位置索引,该怎么做呢?import recontent = "My name is Li Yuanjing"pattern = "name"match原创 2021-05-02 18:01:03 · 4974 阅读 · 1 评论 -
random库:Python随机数的生成与应用
目录前言前言原创 2021-05-01 19:48:54 · 7762 阅读 · 1 评论 -
glob库:文件名的匹配
目录前言通配符星号(*)问号(?)区间匹配([0-9][a-z][A-Z])转义元字符前言既然在Pathlib库中提到了glob()函数,那么我们就专门用一篇内容讲解文件名的匹配。其实我们有专门的一个文件名匹配库就叫:glob。不过,glob库的API非常小,但是仅仅应用于文件名的匹配绰绰有余。只要是在实际的项目中需要过滤,或者匹配一组文件,都可以使用该库进行操作。通配符星号(*)话不多说,下面我们使用通配符来匹配文件名,示例如下:import globfor name in sorted原创 2021-04-30 18:01:00 · 5594 阅读 · 0 评论 -
Pathlib库:Python面向对象的文件路径处理
目录前言建立路径joinPath()路径格式化with_name()与with_suffix()解析路径home()与cwd()获取当前路径下的所有文件路径设置条件获取文件(glob()与rglob())读写文件前言Pathlib库提供了一个面向对象的API来解析,建立,测试和处理文件名和路径,而不是使用底层字符串操作。其中Pathlib库有2个非常关键的类名:PurePosixPath,PureWindowsPath。它们可以在任意操作系统上实例化和使用,因为它们只处理文件名与目录名。要实例化一个原创 2021-04-29 18:01:42 · 7281 阅读 · 2 评论 -
os.path库:Python操作和处理文件路径
目录前言前言原创 2021-04-28 18:13:30 · 6443 阅读 · 2 评论 -
textwrap库:Python格式化文本段落
目录前言切割文档文本缩进文本去缩进截断文本前言前文是针对普通的字符串数据进行处理。今天,我们要讲解的textwrap库,是对多文本进行处理的库。比如对于段落的缩进,填充,截取等,都可以通过textwrap库进行操作。特别是自己编写打印程序的时候,可以使用该库进行校正文档非常便捷,大大的加快了文本格式的处理。话不多说,我们来一步步学习textwrap库。切割文档一般来说,一篇英文文档在不考虑换行的情况下,默认是填充整个文档行才切换至下一行的。现在,我们需要保证每行必须有且仅有50个字符怎么办?我们原创 2021-04-27 19:45:38 · 5907 阅读 · 1 评论 -
calendar库:Python日历的处理与生成
目录前言prmonth()与TextCalendar()前言calendar库也是用于处理日期的库,像前面的某些函数返回星期是[1-7],有的是[0-6]。会给很多程序员在判断的时候造成不便。而calendar库能自己设定星期的规则,比如中国常用的每个星期从星期1开始,那么日历就可以生成从星期一开始的日历。本篇,就将详细讲解calendar库的使用规则。prmonth()与TextCalendar()prmonth()是一个简单的函数,可以生成月的格式文本输出。具体用法如下所示:import c原创 2021-04-26 18:03:15 · 8349 阅读 · 2 评论 -
datetime库:Python日期与时间值管理计算
目录前言获取当前时间前言datetime库也用于时间日期的处理,主要用于完成日期和时间的解析,格式化和算术运算。本篇,将完整的介绍datetime库的应用知识。获取当前时间与time库一样,datetime库也有获取当前时间的函数:datetime.date.today()。通过该函数,也可以分离出具体的年月日时分秒等具体的时间值。具体代码如下:在这里插入代码片...原创 2021-04-25 18:05:16 · 10653 阅读 · 2 评论 -
time库:Python的时间时钟处理
目录前言获取各种时钟获取当前时间时间加减法处理时区前言time库运行访问多种类型的时钟,这些时钟用于不同的场景。本篇,将详细讲解time库的应用知识。获取各种时钟既然time库提供了多种类型的时钟,下面我们直接来获取这些时钟,对比其具体的用途。具体代码如下:import timeprint(time.monotonic())print(time.monotonic_ns())print(time.perf_counter())print(time.perf_counter_ns())p原创 2021-04-24 18:05:29 · 9250 阅读 · 3 评论 -
string库:Python的文本常量与字符串模板
目录前言首字母大写字符串模板高级模板format用法基本用法进阶用法高阶用法前言在程序中,有很多高效率的字符串处理方式,如果开发者能够完全掌握这些高效的字符串处理,往往在开发者也能事半功倍。比如针对于字符串的处理,也是自然语言处理的基础知识。而python3中,处理字符串的库为:string。本篇将详细介绍各种字符串的高效处理方式。首字母大写对于英文单词组成的字符串来说,很多时候,我们需要对英文的首字母进行大写的变更。如果没有了解其高效率的函数,一般我们都通过循环,判断空格,取空格后一位的字母,判原创 2021-04-23 18:38:10 · 8421 阅读 · 2 评论