Python
-
Python存储list到数据库,重新读取后无法正确识别为list错当str且无法转换的处理办法
如下图所示,有一个字段是list类型。 读取时打印出来看起来就是list,但是打印类型却显示为str。 通过类型转换 如果通过类型转换,直接定义为list,则会拆解为一个有一个的字符串 ,显然是不行的。 通过解析字符串为list
12345678910111213str1 = 'abcde'str2 = 'a b c d e'str3 = 'a, b, c, d, e'result1 = list(str1)result2 = str2.split()result3 = str3.split(', ')print(result1)print(result2)结果:['a', 'b', 'c', 'd', 'e']['a', 'b', 'c', 'd', 'e']['a', 'b', 'c', 'd', 'e']参照这样的方法,我们使用.split()后又发现一个问题。 第一行…
-
详解Python字典循环遍历的几种情况 只要value或只要key等情况的操作方法
一、只需要字典中的key 可以使用keys()函数直接实现 代码示例:
123person_dict = {'name': 'Tom', 'age': 24, 'gander': 'man'}for key in person_dict.keys():print(key)返回结果: 二、遍历字典的value 可以使用values()函数直接实现 代码示例:
123person_dict = {'name': 'Tom', 'age': 24, 'gander': 'man'}for value in person_dict.values():print(value)返回结果: 三、返回字典的元素(键值对) 可以使用items()函数…
-
Python自学Day65 解析动态内容
解析动态内容 根据权威机构发布的全球互联网可访问性审计报告,全球约有四分之三的网站其内容或部分内容是通过JavaScript动态生成的,这就意味着在浏览器窗口中“查看网页源代码”时无法在HTML代码中找到这些内容,也就是说我们之前用的抓取数据的方式无法正常运转了。解决这样的问题基本上有两种方案,一是JavaScript逆向工程;另一种是渲染JavaScrip…
-
Python自学Day64 并发下载
多线程和多进程补充知识点 threading.local类 使用线程时最不愿意遇到的情况就是多个线程竞争资源,在这种情况下为了保证资源状态的正确性,我们可能需要对资源进行加锁保护的处理,这一方面会导致程序失去并发性,另外如果多个线程竞争多个资源时,还有可能因为加锁方式的不当导致死锁。要解决多个线程竞争资源的问题,其中一个方案就是让每个线程都持有资源的副本(拷…
-
Python自学Day63 存储数据
存储海量数据 数据持久化的首选方案应该是关系型数据库,关系型数据库的产品很多,包括:Oracle、MySQL、SQLServer、PostgreSQL等。如果要存储海量的低价值数据,文档数据库也是不错的选择,MongoDB是文档数据库中的佼佼者,有兴趣的读者可以自行研究。 下面的代码演示了如何使用MySQL来保存从知乎发现上爬取到的链接和页面。[crayon…
-
Python自学Day62 数据采集和解析
数据采集和解析 通过上一个章节的讲解,我们已经了解到了开发一个爬虫需要做的工作以及一些常见的问题,下面我们给出一个爬虫开发相关技术的清单以及这些技术涉及到的标准库和第三方库,稍后我们会一一介绍这些内容。 下载数据 – urllib / requests / aiohttp / httpx 解析数据 – re / lxml / beau…
-
Python自学Day61 网络爬虫和相关工具
网络爬虫和相关工具 网络爬虫的概念 网络爬虫(web crawler),以前经常称之为网络蜘蛛(spider),是按照一定的规则自动浏览万维网并获取信息的机器人程序(或脚本),曾经被广泛的应用于互联网搜索引擎。使用过互联网和浏览器的人都知道,网页中除了供用户阅读的文字信息之外,还包含一些超链接。网络爬虫系统正是通过网页中的超链接信息不断获得网络上的其它页面。…
-
Python自学Day53-60 用FastAPI开发数据接口
用FastAPI开发网络数据接口 FastAPI 是一个用于构建API(网络数据接口)的现代、高性能的Web框架,基于Python 3.6+,使用了Python中的类型提示进行类型检查,非常符合工程化开发的需求,在业界有非常好的口碑。下面,我们先用代码告诉大家FastAPI到底能做什么,然后再来讲解它的方方面面。 FastAPI五分钟上手 安装依赖库和ASG…
-
Python自学Day52 接入三方平台
接入三方平台 在Web应用的开发过程中,有一些任务并不是我们自己能够完成的。例如,我们的Web项目中需要做个人或企业的实名认证,很显然我们并没有能力判断用户提供的认证信息的真实性,这个时候我们就要借助三方平台提供的服务来完成该项操作。再比如说,我们的项目中需要提供在线支付功能,这类业务通常也是借助支付网关来完成而不是自己去实现,我们只需要接入像微信、支付宝、…
-
Python自学Day51 使用缓存
使用缓存 通常情况下,Web应用的性能瓶颈都会出现在关系型数据库上,当并发访问量较大时,如果所有的请求都需要通过关系型数据库完成数据持久化操作,那么数据库一定会不堪重负。优化Web应用性能最为重要的一点就是使用缓存,把那些数据体量不大但访问频率非常高的数据提前加载到缓存服务器中,这又是典型的空间换时间的方法。通常缓存服务器都是直接将数据置于内存中而且使用了非…