用 python 怎样获取昨天、今天、明天的日期? let's go 咱们选的是 day time 这个阔引入 tea time 和 team dalata, 要获取当前的时间,选择 tea time 的 now。 然后如果想获取当天的日期的话呢?卡瑞泰姆可是化成年月日的形式。 如果想获取昨天的日期,那就是当天时间减去 tam dada 特 des 等于一。那么明天的日期呢?就看着 tam 加上 tam dada, ta dades 等于一,进行格式化。 这种方法也可以计算下一周的时期,比如说加上 tymen dota 的一切,进行格式化。然后咱们打印今天昨天明天下周的日期右键运行。咱们看到今天是三月十一号,昨天是三月十号,明天是三月十二号,下周呢就是三月十八号。
粉丝19.0万获赞46.8万

在量化交易的世界里,数据就是我们的核心资产,没有高质量的数据,再精妙的模型也只是空中楼阁。今天我们就来聊聊如何利用通达信的 python api, 高效地获取我们策略所需的各种市场数据。 k 线数据可以说是量化交易中最基础、最常用的数据类型了,无论是做技术分析还是构建复杂的交易模型,都离不开它。 通达信 api 提供了非常灵活的 get market data 函数,可以轻松获取开盘价、最高价、最低价、收盘价和成交量这些核心指标。更棒的是,它支持从一分钟线到月线的各种周期,满足不同交易策略的需求。 你可以指定任意时间段,比如过去一年的日线数据,或者最近一周的分中线数据,甚至可以一次性批量获取多支股票的 k 线,效率杠杠的。 比如想同时看茅台和平安银行最近二十天的日线,一行代码搞定,光有历史数据还不够。对于日内交易或者需要快速反应的策略来说,实时行情是必不可少的。 通达信 a p i 提供了两种方式来获取实时数据,第一种是 get market snapshot, 就 像给股票拍个快照,告诉你当前最新的价格、买卖盘口、成交量等信息,简单直接。 第二种更加强大,叫做 subscribe hq, 它可以让你订阅特定股票的实时行情推送, 一旦有新的行情,数据, api 会立刻通知你的程序,非常适合需要持续监控市场动态的场景。想象一下你的策略能在价格跳动的瞬间就做出反应,这速度简直了。 技术分析固然重要,但基本面分析同样是我们理解公司价值的关键。通达性 api 在 这方面也做得相当到位。 get financial data 函数可以直接获取上市公司的财务报表,比如资产负债表、利润表等等,让你对公司的经营状况一目了然。 如果你只需要某个特定日期的财务数据,比如去年年底的利润表,用 get financial data by date 按日期查询就非常方便。 此外, getstock info 还能获取股票的基本信息,比如所属行业、上市时间等。这些数据对于基本面选股、估值分析以及风险控制都直观重要。比如你想筛选出 roe 持续高于某个预值的公司, 有了这些财务数据,分分钟的事儿。股市不是孤立的,而是由一个个板块组成的。 板块轮动往往蕴涵着巨大的机会。通达信 a p i 提供了强大的板块数据查询功能, 想知道市场上有哪些热门板块? get sector list 能列出所有板块。想研究某个特定行业的表现, 比如新能源汽车板块,用 getstock list sector 就 能拿到这个板块的所有成分股。结合前面讲的 k 线数据,我们就可以分析不同板块近期的表现差异,从而制定行业轮动策略。 比如通过比较不同板块成分股的平均涨幅,找出当前表现最强的行业,进行配置调整,这种策略在震荡式中尤其有效。 a 股市场庞大且复杂,不同的市场有不同的规则和特点。 通达信 api 的 getstock list 函数非常强大,它可以根据不同的分类代码获取各种市场的股票列表。 比如想获取沪深三百指数的成分股,输入代码一就行。想看科创版的所有股票,输入 k、 c、 b, 甚至包括主板、创业板、 etf 基金、可转债等等,应有尽有。 这对于我们做跨市场研究,分析指数基金构成或者针对特定息分市场设计策略都非常有用。比如,我们可以轻松比较沪深三百和中证五百成分股在过去一段时间内的表现差异,为资产配置提供依据。 时间在量化交易中扮演着极其重要的角色。一个策略可能只在特定的交易日才有效,或者我们需要精确计算回测期间的收益。通达信 a p i。 的 交易日历功能就派上用场了。 get trading dates 可以 获取指定市场和时间段内的所有交易日,这对于确定回测的时间窗口非常关键。 想知道某个具体的日期是不是交易日, it's trading day 函数能帮你快速判断, 而 get trading days range 则能直接给出一个日期范围内的所有交易日。这些功能看似简单,但在处理大量数据、进行回测验证时,能避免很多因为忽略节假日而导致的错误,确保策略的严谨性。 对于追求稳健收益的投资者来说,股息策略是一个不错的选择。高股息率往往意味着公司现金流充裕,分红意愿强。 通达信 api 的 get divide factors 函数就是用来获取股票分红信息的利器。通过它,我们可以查询到某只股票的历史分红记录,包括分红金额、除权、除息日等关键信息。 有了这些数据,我们就可以构建基于股息率的选股策略,比如筛选出过去几年股息率持续较高的公司,或者分析不同行业的股息支付习惯, 这对于构建防御型投资组合或者进行现金流分析都非常有价值。新股 ipo 总是能吸引市场的目光, 对于一些策略来说,比如新股申购或者打新策略及时获取 ipo 信息就显得尤为重要。通达信 api 的 get ipo inf 函数可以获取市场上所有新股的发行信息,包括股票代码、发行价格、所属行业等。 如果你想只关注股票类的新股,还可以通过参数过滤只获取股票 ipo 的 信息。了解新股的发行情况,不仅能帮助我们把握市场的新活力,也能为某些特定策略提供数据支持, 比如分析新股上市后的表现,或者评估市场对不同类型新股的偏好。可转债作为一种兼具证券特性和股票特性的投资工具,近年来越来越受到投资者青睐, 它的灵活性和潜在的收益空间使其成为量化策略中的一个重要组成部分。通达信 api 同样支持可转债数据的查询,通过 getstock list 并指定 convertible bond 的 分类,我们可以获取所有可转债的列表, 而 getc 滨否则能提供更详细的可转债信息,比如转股价、纯债价值、转股价值等。 这些数据对于进行可转债套利、评估债底保护价值或者构建攻守兼备的投资策略都非常关键。比如我们可以基于转股溢价率筛选出可能被低估的可转债。 掌握了数据获取的基本方法后,我们还需要一些高级技巧来提升效率和精度, 比如,如果你经常需要读取某只股票的 k 线数据,可以使用 refresh client 预先加载到缓存中,这样后续读取就会快很多。 处理历史数据时别忘了赋权问题, api 允许你指定 dividend type 参数获取前赋权或后赋权数据,这对于准确计算收益务关重要。 拿到原始数据后,通常我们会用 pandas 进行合并、清洗和计算,比如计算均线、布林带等技术指标。 这里我给大家展示了一个简单的均线多头排列选股策略,势例就是利用前面提到的 get market data 获取数据,然后用 pandas 计算均线并筛选出满足条件的股票。 这只是冰山一角,实际应用中可以结合更多指标和逻辑。今天我们详细介绍了通达信 python api 获取行情数据的九种主要方法, 从基础的 k 线数据到实时行情、财务数据、板块数据、股票分类、交易日历、分红信息、 ipo 信息以及可转债信息,可以说覆盖了量化交易中最常用的数据类型。 而且这些功能都经过了严格的测试,稳定性可靠,可以直接用于实战策略的开发。 掌握了这些数据获取的技能,就相当于为你的量化之旅装上了强劲的引擎。接下来,我们将深入探讨如何利用这些数据计算常用的技术指标,生成买卖信号,构建属于自己的交易体系,敬请期待。

好,如果一大家理解了,那后边的所有其他的内容呢,你就都理解了,来,我把这个二呢整个给大家拿过来,我们来读一下,哎,二呢,主要想跟大家聊的就是如何获取紫禁城执行后返回的结果, 那其实套路呢,就是两个人结合到一起,就可以获取就是 future 类的实力对象加上 result 的 方法,哎,那这样慢慢来啊,我们把这些东西呢整个给它复制,然后呢给它放在这块,哎,我就不再一点点写了啊,我把这个注视呢给大家整个都解开, 好,然后接下来呢,我想这样,我想让这个 work 呢,它工作完之后啊有一个返回值,哎,那我在这呢就这么写,先给他来一个 return, 哎,然后内容呢,我这么写 叫我是任务 n 的 结果。好,那当然,这 n 呢得用这个花括号呢,给它包起来。好,前面呢加上一个小 f, 也就是说我的紫禁城工作的时候是有结果的了, 哎,然后我在这去提交这个任务的时候呢,你把任务干完了之后,我想得到结果,哎,那这会呢,就涉及到一个事,就是 submat 方法呢,它是有返回值的,哎,比如说呢,我可以随便的拿一个 a 变量去接收,但是你写 a 呢,稍微有点不太合适, 因为它给你返回的东西啊,它可不是一个数字字母串这些东西,它给你返回的这个东西呢,是一个 future 类的实力对象, 哎,所以说一般情况下呢,我们会把这个词儿呢给它拿过来,哎,放在这儿,然后把这个首字母呢给它小写,因为你首字母大写表示的是这个类,小写呢,表示的是这个类的实力对象,哎,比如说呢,让它叫做 future e, 好,那然后呢,我把这些复制一下,然后这这这还有这还有这一粘贴,然后呢,这会应该是二,这是三,这是四,这是五,这是六,这是七,好,我就拿到了七个 future 对 象,哎,问一下各位,这个 future 什么意思呀? 哎,我们查询一下,你看叫将来的未来的,哎,也就是说呢,各位,你这个东西不是一个一步的提交吗?也就说你不是不堵塞吗?哎,那你肯定就是,哎,去吧,你干活去,但是我想问你,干这个活在未来是不得有一个结果,哎,所以说在这呢,它用的是 future, 哎,当然了,如果你觉得这个词儿太长,你也可以这样,哎,我把整个这些词儿呢给它缩减一下,我就让它叫做 f, 但是你心里边得明白这 f 表示的是什么意思,是不是?哎表示的是他的实力对象,好,那么接下来呢,我去分别打印一下,这个一二三四五六七, 好,那在这呢,先来一个打印,先打印这个 f 一, 然后呢给他复制几份,好,这块是二,然后这块是三,好,这块是四,这块是五,这块是六,哎,然后这会呢是七。好,那大家觉得接下来控制台会打印什么呢?来,我们还是先盘一波啊,各位, 呃,那这样吧,我把这个注是呢给它写的简单一点,因为我们在上边呢已经给大家写上了详细的注。是,好,那回到这边,这样我把它整个这块呢, 哎,给它都删掉,哎,就是意思是主色这个主进程,等所有的任务完成,然后你再往下走。好,那接下来我们来看一下代码的全貌,哎,那整个执行流程是这样的,好,首先呢,控制台上得打印这个 start, 对 吧? 然后呢,你去创建了一个进程池执行器,它里面包含着几个能干活的人呢,哎,是三个,好,随后呢,你把这些任务咔咔咔就都提交给进程池了,那至于说进程池怎么调度,那就是它的事了。 哎,大家还记得这个 submet 有 个什么特点吗?就是不堵塞的,也就说这些东西是瞬间就全都掉完了,那随后呢,就瞬间得到了这些结果,哎,然后呢,我就去打印这个结果,对不对?但是我想问大家的是,你说,毕竟我每个任务这块是不是还等一秒呢? 也就是说你从一到七刷一下你就掉完了这七个任务呢?刷一下就交给进程池了,这七个任务对不对?但是我想问你,每一个任务它执行的时候是不都得等待一秒啊? 哎,也就是说任务得一秒钟之后才有结果,哎,但是你发现代码是不等你的,它是不是刷刷刷还会往下走啊?哎,所以说接下来呢,打印就是这样的,先打印这个 start, 然后这会呢是你开启进程池,并且给他分配任务,哎,然后随后呢,控制台上就开始出现了这一堆打印,哎,先打印 f 一, 然后是 f 二,然后是 f 三,然后是 f 四。哎,那问一下各位,你说打印这些东西的时候,这个任务是不是还没有执行完的呀?那你说它打印出来的东西是什么呢? 好,我们来看一下来右键运行,哎,你发现确实是这样啊,你看一上来这七个是不是都给你打印出来了,你不是想要那个结果吗?那我给你打印了, 哎,然后呢,你发现我的任务才开始一点一点的去执行,对吧?哎,所以说你会发现打印的这个东西,你就看这一行嘛,它真的是一个啥 future 类的实力对象, 也就是说你直接打印这些 f 一 二三四五六七呢,他给你的就是一个 future 类的实力对象,但是我们都知道,我们想要的不是这个实力对象, 我们想要的是这个实力对象里边藏着的那个未来的结果。但是如果你直接这么打印,他什么也给不了你。就比如说各位,人家打印这的时候,那我问你,任务一是不刚提交上去,还没等一秒呢,你反手就找人要东西,人家只能给你这个东西, 对吧?哎,但是你说老师,我想要这个东西里边所藏着的那个未来的一秒的那个结果,那得怎么办呢?哎,那这样你在所有人的后边,你得去掉一个方法,叫做 result 方法。 哎,注意啊各位,之前在我的课堂上,我经常写 result, result 那 些都是自定义的,但是这块你不允许写其他的方法,人家设计的时候就叫 result 方法,哎,但是你一定要注意一个事情,这个 result 的 方法它可是阻涩的, 哎,什么意思呢?就是你所提交的这个任务一,如果它没有结果的话,那这行代码呢,就会卡在这个位置, 哎,那同理,如果你提交的这个任务二,他没完成的话,那么这局代码呢,也会卡在这。哎,也就是说这个 result 会等,等什么呢?等你这个任务完成,哎,所以说接下来呢,我们先别着急运行,我们来盘一波控制台上会怎样打印? 那首先呢,打印的肯定还是这个 start, 对 吧?来给大家写上这是 start, 哎,然后呢,我们分析的再细节一点,那你说这个是不是一个进程池执行器啊?哎,就意味着你有这么一个东西,哎,那比如说呢,里边这个进程我就不写号了,让它是 a, 还有 b, 还有 c, 哎,这是一个进程池,里边有三个干活的人,好,然后接下来呢,你整个这些代码搜搜搜,很快就跑完了,也就给大家写上一二三 四,然后是五,然后六,然后是七,好,那接下来就得分配干活了,哎,那他是这么分配干活的,把这个一呢交给 a, 哎,但是由于这个任务一里边是不是有一个 time 点 sleep 一 秒啊,所以说呢,他不会很快的就干完活,所以说进程值呢,很明显就会把这个二呢交给 b, 把这个三号任务呢交给 c, 对 吧? 哎,那进城值呢?就开始干活了,那么一二三他们是不是都得去等那个一秒钟啊?哎,那所以说等的这段时间内,那我问你,各位,四五六七这些任务能分配吗?不 能分配,哎,那我问一下,这块能打印吗?也不能打印,也就是说 abc 在 忙着一二三的那一秒钟,剩下的任务是不能分配的,哎, 并且这句话呢,也不会等到任何结果的,对不对?我点 redo, 它不就想等结果吗?那什么时候会有结果呢?一秒钟之后。好,那接下来我们就分析一秒钟之后它得干嘛? 一秒钟之后好像有两件事需要做,各位,你说一秒钟之后是不是意味着 a、 b、 c 都忙完了呀?你说接下来应该干什么呢?来,我开一下这个橡皮擦啊,来看一下。那把这条线呢给它弄走。 哎,这条线呢也给他弄走,这条线呢也给他弄走。好,那也就意味着一秒钟之后, abc 得重新分配四 五六,你说对吧?各位好,那还得干另外一件事,哎,就是什么呢?你这会是不是也等到结果了呀? 哎,所以说,我的控制台上是不是得打印出来一的那个任务的结果啊?哎,但是这呢,我得说一下,他不一定是他先打印, 有不有可能?各位来,一秒钟之后,你是不是把这个任务四分配给 a 了呀?那我想问你,任务四一开始,人家是不就会打印一个什么 work 正在执行任务几,是不也有可能控制台上先打印的是那个 work, 我 正在执行任务四,然后带上它的那个 pid 啊?是不也有可能啊?也就是说,接下来的一秒钟到点的时候,它是一个争抢的行为, 有的时候可能这句话就抢先了,哎,有可能呢,这句话就抢先了,对不对?而且大家还要知道,那一秒钟之后啊,可不是光一有了结果,二和三是不也有结果呀?所以说这句话是不也得打印,这个是不也得打印呢? 哎,那我再问大家,你说一秒钟之后,除了四这个任务要分配,五和六是不也要分配啊?哎,那你说 a 在 执行四的时候呢,是不也得打印这句话呀? 所以说接下来你所看到的一个效果呢,应该是这样的,就是那每个任务执行的时候,它所打印的那个 work 正在执行任务几和这边给你带来的这个结果啊,它是交替打印的, 哎,我们来看一下效果啊,来,右键运行,哎,那你看啊,来,哎,注意看,各位是不是交替打印的,说老师,没有啊,你看,这不是一上来就一二三吗?那这是肯定的呀,一上来他得先分配三个任务吗?然后得等多久?是不是一秒钟啊?好,一秒钟之后呢,你看这吗, 任务四就说话了,哎,然后任务一的结果呢,就来了,随后呢,那你看任务二是不是有结果了,哎,那以此类推,后边就是交替着,交替着,对吧? 那当然了,最后的这个五六七呢,它肯定是粘在一起的,对吧?因为我最后提交的是五六七这些吗?那最后这些它肯定是在一起的,也就说它是一个交叉的打印, 还说老师不行,不好,我不想要这种交叉的打印,这很难受,我想要的是 start, 哎,然后呢,你就开始去给我忙这些任务,对吧?你是怎么调度啊?我就不管了,忙完了之后呢,我整体想把这些结果呢给它打印在一起,那非常简单,你只需要调整一下代码的顺序就可以了。 我把这些东西给他拿走,放在哪?放在这个下边是不就完了,哎,非常的简单。来,给大家盘一下这个逻辑。在这呢,我去创建了一个进程池执行器,它里边有三个可以忙起来的进程, 随后呢,我给他依次的,嗖嗖嗖嗖嗖,哎,给了他七个任务,然后呢,你就去调度吧,你就去忙吧,剩下的事我不管了,等你所有的任务都完成了,哎,然后我依次的去得到一下他们的 result, 结果 来,右键运行,你看一下这回的效果,哎,还是三个一组,三个一组,对吧?好,最后你看结果是不出来了,来,再看一遍,走,你看三个一组,好,再来四五六,好,再来七, 好,完事。哎,整体结果是不都拿到了?好,然后接下来呢,我们对代码呢进行一个小优化,哎,那你看,我现在这个七个任务呢,写的特别傻,哎,是不是通过七行去给它完成的呀?其实呢,可以通过一行就去给它完成。 好,那接下来呢,我写一下,我先把这些呢整个给它注视掉,好,然后接下来呢,我这么写,我去定义这么一个东西,叫做 f u t u r e s, 哎,叫做 futures, 我 让它呢是一个列表,哎,就是我的目标呢,是把 f 一 到 f 七这些东西啊放在一个列表里边。 好,然后接下来我要写的这个东西叫列表推导式,哎,就看你之前学这一部分东西的时候,你过不过关了,哎,我这么写,我还是把这个 execute 呢给它拿过来放在这个位置,但是这块呢,我不能写死,它是一,哎,我写什么呢?我写 index 好, 然后把空儿台呢收起来,哎,说,老师,这 index 是 谁呢?好,看,我后边的写法 for index, 然后写成一个 range, 里边来一逗号八,这是什么意思?各位,哎,分析一波啊,我这里写的范围 一逗号八,表示呢就是七个任务,对吧?好,那我就开始去循环,去便利,哎,那然后呢,每一次的 index 就 分别是一二三,一直到几呢?一直到七,哎,然后呢,我就去执行这个黄色圈里的代码,哎,就是去提交任务, 哎,所要完成的事呢,就是 work 这个函数,然后每次的编号呢?是这个 index, 哎,就是从一二三一直到几呢?一直到七,哎,但是我们知道这个东西它是一个表达式,对不对?也就是说它是不是有结果? 好,那我就把它执行的结果依次地放入这个绿色的,是不是这个列表当中啊?哎,其实这会就是看你之前的这个列表推导式你过不过关,哎,这些东西呢,我不给你删,还是给你留在这?这一行就顶了这么多行,并且是把 f 一 到 f 七呢塞到了这个 futures 这个列表里边。 好,那你说接下来这一块呢,是不是也不用这么麻烦了?哎,把这些呢还是给它注视掉,哎,我就可以这么写了,来一个 for, 然后呢,我便利的应该是这个 futures, 对 吧?好,那比如说呢,我写上这个小 f in 这个里边,哎,为啥在这写小 f 呢?因为你这个列表里边是一堆 future, 对 不对?那每一个呢?就是小 f。 接下来呢,我很简单,就是去直接打印这个小 f 身上的这个 result 方法的返回值是不就可以了?来右键运行,我们再来感受一下,哎,你发现呢,跟刚才其实是一模一样的,但是写起来是不是要简单了很多很多呀? ok, 行,那我们把整个这个第二个呢就给他注视掉了。

这是一堆字符,复制到 python 中,然后回车就会抓取对应网页的内容,如果可以自动保存信息,那整个过程就叫做网络爬虫。 理论上来讲,网络爬虫可以获取网络上几乎所有的信息,但是因为爬虫而踩缝纫机的人却不在少数。在网站的根据名后边加上这一段字符,然后回车我们就可以看到这一份君子协议, 他是网站管理员给爬虫写的一封信。在 b 站的君子协议中,他默认各大搜索引擎的爬虫随意的抓取,但也禁止了其他的所有爬虫。君子协议嘛,防君子不防小人。而本期是 python 的爬虫入门级内容, 目前这些很行的知识咱还是摸不着的,但至少看完本期内容,能让你对爬虫有一个基础的认识,能对这一大堆字符有一个大致的了解。本期我们使用液体编程来开始今天的爬虫入门级内容。开始之前,我们先考虑这三个问题, 然后进入网络爬虫的学习。网络爬虫的英文是 worb corolla, 它可以根据一定规则自动抓取网页的信息,它就像一只在网络上爬行的蜘蛛,所以也称为网络蜘蛛。 之所以可以抓取信息,还是因为日常所浏览的网页几乎都是由原代码构成的,因此爬虫获取的内容就是浏览器解析之前的原代码。我们设想一下, 如果我现在想知道榴莲味的口香糖值不值得买,我可能要手动去找相应的评价。对于爬虫来说,它可以自动化的抓取网页的内容,然后提取之后保存在文档中,这是不是大大节约了手动搜索的时间呢? 网络牌中的英文 worldcrola 也叫网络蜘蛛,他只能获取网页中存在的信息,所以选择 c 项。对于每一个网页来说,想要访问他就需要有唯一的链接,那这个链接也称为 url, 左右两端是不变的,可 改变的是中间的主机名,这也是 url 的规律,主机名不同,那访问的网页也就不同。一般我们访问的网络资源是存储在服务器中的,服务器的种类有很多,浏览网页所需要用到的是 word 服务器。接下来我们看一下 http 协议, 他就好比快递公司定义了客户和仓库之间发送快递的内容和步骤。在这个网址中我们会发现多了一个 s, 他对应的英文是 cure, 安全的,他在之前传输的上面加了一层保护,使得传输的数据更加的安全。接下来我们学习一下请求和响应。 如果现在静静买了一件商品,但是觉得不合适,他要换货,那他需要先寄快递,然后填写换货的信息,发出快递给到仓库,仓库会根据请求的换货信息来进行执行,处理完之后会返 还给静静,这个过程就叫做请求和接收。静静告知给仓库的是要更换的商品和尺码,仓库验收之后再把匹配的商品尺码发送给静静,这就完成了一个信息接收的闭环。 在 http 协议中也是如此,发送请求,告诉 worb 你想要的数据,然后 worb 服务器会根据收到的请求进行执行,并返回 http 进行响应, 最后会把收到的数据解析成网页展示出来。接下来我们看一下状态码,这一章节并不需要特别的记忆, 网页可以正常打开,那它的状态码就是二零零,相比于这个四零四更为常见,有时也会出现五零三等等。看到这里还会有多少小伙伴呢?如果觉得有点累了,可以休息一下,接下来我们继续使用液体编程来学习 requests 模块儿的安装和导入。 小伙伴需要安装 python, 在这里我安装的是三点九版本的,安装好之后按问价 r 输入 cmd, 然后会弹出命令提示符,然后进入 pip install requests, 然后回车就可以安装了。这个模块的作用是用于网络数据的获取, 爬虫爬的是网页中的内容,那我们就需要网页的 url, 我们需要把网页的链接复制给 url, 这里需要注意的是等号两边是有空格的。然后我们需要引入一个全新的 request 点 get 的函数,它可以模仿浏览器请求网页,让我们使用 request 点 get 请求之后会得到一个回应。二六零大家应该很熟悉,这个是代表成功的意思, 有时候请求网站也会出现异常,这个是 h t d p s。 协议造成的,需要在请求的时候 加上一个参数,就可以忽略整数的认证了。我们尝试一下,最后运行就得到了 response。 二零零说明爬虫是可以正常访问到这个网站的,接下来我们学习 h t m l, 它的全称是超文本标记语言, 主要是来定义网页的内容和结构,它是有一系列的标签组成的,这些标签用来标记内容块,分为成对出现或者单独出现, 在成对出现的标签中,开始标签和结束标签的差别就是结束标签中多了一个斜杠,这些都是成对出现的标签。 单独标签,如 b r, 这个是换行的一个标签。接下来我们需要安装一个 beautiful super 模块儿,这个模块儿的安装和 requests 的安装非常相似。在 c m d 命令提示服中输入 p i p instar b s 四就可以进行安装了,它可以从网页中 提取想要的数据。我们想要使用 b s 四模块中的 beautiful soup 类,需要使用 from import 从 b s 四导入 beautiful soup, 用代码表示为 from b s 四 import beautiful soup 导入之后,我们需要尝试使用这个模块儿来解析一段 h t m l。 我们需要把 h t m l 代码复制给 h t m l beautiful super 这个函数可以把不标准的 h t m l 代码重新更正。在创建 beautiful super 对象时, 需要传入两个参数,一个是 h t m l 文本,我们用变量小写的 h t m l 表示。一个是解码器类型,我们使用 l x m l 来表示。解码器是有双引号的,这里需要特殊记忆一下。然后我们将 beautiful 速补对象复制给速补之后,就可以 解析这一串 h t m l 代码了。如果能看到这里,那是真的不容易,真的挺厉害的。接下来我们使用解决编程来创建一个 beautiful 速补对象,传入变量 h t m l 和解码器 l x m l, 然后复制给速补,那么速补等于 beautiful 速补括号。把这一行代码敲一下,然后 print 速补,运行一下,就得到了上面的内容。接下来我们尝试提取这三段文字。在这几段话中,两边的标签都是 e m, 那我们就需要用到一个全新的函数来查询符合条件的节点, 它是翻的奥函数。如果我们想获取 h 一中的内容,那我们在速补中查找名字为 h 一的节点,然后复制给 ps, 然后 print ps, 就得到了标签 h 一的内容变量。速补是 beautiful 速补对象翻的奥 号函数,可以查询束缚中符合条件的元素,并排列一个列表复制给 ps。 内幕参数是可以忽略的,我们也可以直接传入参数值。这些内容没有什么技巧,他们都是人为定义的,有了这些底层的逻辑,才能够更好的理解下面的知识点。 在 h t m l 的代码中,我们可以看到三句台词都在 e m 标签内,我们使用 sup 点范德奥,然后在里面填入 e m 节点 来提取所有的包含 e m 节点的内容,然后复制给 continent, 最后 print content all, 运行之后就得到了 e m 标签中的所有内容。如果你看到了,现在是不是觉得离成功不远了呢?我们只需要把这些标签去掉就可以导出了。我们先通过这道题回顾一下整个过程。首先使用音炮 的导入 requests, 然后从 b s 四中导出 beautiful super, 然后把网址复制给 url, 然后发送请求复制给 response, 之后把服务器给到内容转换为文本 tst, 之后使用 beautiful super 读取 html, 添加 l x m l 解码器,复制给速普,然后使用 fundol 去查询速普中的 e m 节点,之后复制给 continent o, 最后使用 print 输出 contine l, 然后运行就可以得到 e m 节点中的所有内容了。 在上面的内容中我们提取了内容,但是两边都是有标签的,我们就需要想办法获取标签内的内容。这个时候我们需要用到 stream 属性来获取节点中的内容,但是由于翻到返回的是一个列表,我们不能够直接调用 stream 属性,所以我们需要使用 放循环便利列表来获取每一个节点的字符串,再调用 string 属性来获取节点的标签力的内容。我们使用放循环便利 canteno 获得完每个章节中的标签的内容,然后复制给 content stream, 最后用 print 输出,这样我们就得到了视频开头的画面, 看视频的你如果能看到现在这些字符,应该不再那么冰冷了吧?再回过头看这三个问题,我想你心里已经有了答案了。也许变成这门爬虫入门课讲解的非常细,从一开始的名词解释,再到慢慢的 requires 模块儿的安装, 网址的负值,再到 beautiful super 模块的安装,翻到函数节点的查询,整体的这几节课下来,真的是由浅入深,非常适合想要学习编程而又无从下手的小伙伴们。当然后面的内容还有很多,如果小伙伴也比较喜 喜欢 python 的爬虫课程的话,请用你的点赞投币、收藏,转发来告诉我,我也会持续更新下去的。想要咨询的小伙伴也可以在手机的应用市场直接下载,也许变成 app, 毕竟不用着急着部署环境,想学的时候可以随时拿起来学一阵子, 十几二十分钟就能够完成一个知识点的学习和练习,让你那颗想学拍死你的心不至于过快的消沉掉。好了,以上就是本期视频的全部内容了,如果对你有帮助的话就关注关注并素质三连吧,我们下个视频再见。拜拜。

大家好,我们在拍摄中,如果要获取今天、昨天、明天的日期,该怎么来做呢?上代码首先我们要导入包,这个包的名字叫 dayt time。 从包里我们要导入两个子模块,第一个是同名的 dayt time, 用来获取时间,第二个是 time duty, 用来获取时间差。那 这两个包里面第一个 data time 是很容易错的,为什么?因为同学们看到名字一样,以为就直接用了是不可以的。还是要有这样一个 from data time import data time 的过程才能避免错误。我们运行一下。 好,有了包之后,我们来看第二步。第二步就是获取现在的时间,可以精确到微秒。在 data time 里面有一个功能叫闹,就是来获取现 在的时间。我们把获取的时间复制给我取名的变量叫 now time。 我们打印出来看一下。我们就得到了一个 day time 格式的年月日时分秒微秒 的数据。好了,我们获得了现在的时间之后,接下来我们要得到今天的日期。今天的日期我们把 no time 拿过来,拿过来之后我们对他用一个方法叫 str f time。 然后这里面我们要指定好我们想要的格式,年月日,就是 y、 m、 d。 前面用百分号用横线连接, 然后把它复制给 today, 也是我取的变量名字。我们运行一下就得到了今天的日期是二零二二年三月二十五号。好,今天的日期汇聚好之后,我们 获取昨天的日期。那昨天的日期怎么获取呢?后面的转换成我们想要的格式,这个我们已经知道了,那就前面这个时间。现在 no time 指的是今天,那我们要计算昨天,就是往前推一天, 减少一天的时间差。那这就把我们刚刚导入的 time dota 这个字模块用起来。指定 days 等于一,就可以获得一个 一天的时间差。我们可以在下面运行看一下,看到确实这边得到的是一个 time duty 的 days one 的时间差。那我们在这里用 now time 减去这个时间差,就获得了昨天的时间。然后通过 s t r f time 指定成 y、 m、 d 年月日的格式,运行一下就得到了二零二二年三月二十四日,就是昨天的日期。那同样的方法我们来计算明天的日期,就是在今天的日期的基础上,加上一天的时间差。 我们运行一下看看,就得到了明天的日期是二零二二年三月二十六日。那最后我们把结果打印出来,我们就得到了今天的日期是二零二年三月二十五号。昨天日期二零二二年三月二十四号。明天的日期二零二二年三月二十六号。你学会了吗?

开放零基础入门第四章四点三学生管理系统三目前学生管理系统大部分功能我们都已经做好了,只剩下修改学生信息的功能还没有实现。 这节课我们将讲解如何更新系统中已保存的学生信息。修改学生信息的第一步,我们通过音符的函数来获取用户想要修改的学生学号。第二步是向用户确认是否修改该学生的信息。 在 update 的 函数中,我们首先用 input 获取用户输入的学号,然后通过负循环查找对应学生的信息。 如果找到该学号对应的学生,将这名同学的学生信息打印出来,询问用户是否确认修改这位同学的学生信息。如果用户输入 yes, 那 么我们就让用户重新输入该学生的学号、姓名和年龄。如果根据学号未能找到相应学生,也要提示用户没有查找到这个同学。 现在我们进入拍唱修改一名同学的信息,依旧运行这段代码。使用操作五来显示所有同学的学生信息。由于我们在列表里面只对李华同学做了初步化,所以我们每次运行这段代码的时候都只能得到李华同学的学生信息。 在这里我们来修改李华同学的学生信息。选择操作三,然后修改李华同学的学生信息,输入李华同学新的学生信息, 我们修改他的 id 为二,名字还是叫李华,年龄改为二十一岁。修改成功之后,我们来查看一下,可以看到我们已经修改成功。 如果我们修改一个不存在的同学,也就是学号为九,可以看到也会提示我们没有这个同学哦。在这里,我们已经将学生管理系统中的六个功能全部完成,是不是没有想象中的困难? 做到这一步,同学们的 python 基础已经掌握得非常好了。但是回到刚刚有一个问题,就是我们只对李华同学的学生信息做了初步化的处理, 那么每一次我修改这些信息,重新运行这段代码后,都不会保存下来。如何才能将我们每次修改的学生信息保存下来呢?我们可以通过文件的形式创建一个 json 文件,这里右击选择一个文件,取名为 students, 点 json。 创建这个 json 文件之后,我们可以将所有的信息以 json 格式储存到这个文件中,那么我们就不再需要这个列表了。那么如何利用 json 文件呢?在创建好 json 文件之后,我们就需要读取这个 json 文件。 如果文件读取成功且内容不为空,程序就会加载其中的数据,并显示对应的学生信息。假如在读取时找不到这个 json 文件,比如说我们没有成功创建,或者文件名输入有误,那么程序也会正常处理,只是会显示一个空的学生信息列表。 在向用户展示学生信息之后,我们就可以让用户继续执行各种操作,而所有更新的数据最终都会保存至同一个 json 文件中。要使用 json 文件,我们首先需要在文件上方导入 json 包,将我们创建的 json 文件的文件路径使用 students file 变量保存下来。 接下来可以编辑一个专门用于加载文件的方法,在这个方法里,我们会加入异常处理, 尝试打开 students, 点 json 这个文件,并读取其中的 json 格式数据。如果文件不存在,为了避免程序报错,我们让方法返回一个空值。之前我们一直是用 studentslist 这个列表来储存学生信息的,在这里我们也可以把加载文件的过程保存到 studentslist 列表中。 我们除了能够通过加载 jason 文件的格式获取学生信息之外,我们还要能够对新添加的学生信息和修改的学生信息在 jason 文件中进行保存。所以我们还需要创建另一个方法,负责将新添加的学生信息以及修改过的学生信息写入到 jason 文件中。 在拍唱中我们验证一下。导入 jason 文件之后,创建了加载和保存文件方法。由于每一次添加功能都会创建新的学生信息, 那么我们重新将保存到 studentslist 列表中的字典添加到 json 文件中,并且向删除功能和 update 功能都会改变学生信息, 所以我们都需要写上 save students, 对 更新的学生信息进行保存。我们来运行这段代码,我们来验证一下添加学生信息功能。姓名为李华,然后年龄为十八岁。在这里我们可以打开 students, 点 json 文件, 可以看到这个文件中已经出现了李华同学的学生信息。我们还可以对学生信息进行修改。修改李华同学,然后把他的 id 改为六,名字还是李华,年龄改为二十一岁。修改成功之后,我们再来点击这个 students 点 jason, 可以看到在这里 id 和 age 已经修改成功,同样我们也可以删除学生信息,在这里我们选择操作二,删除李华同学的学生信息。李华同学的学号已经变成了六了,所以我们在这里也输入六,确认删除李华同学的学生信息。 删除成功之后,我们再来看这个 students, 点 json 文件可以看到这已经是一个空的 json 文件了。现在呢,学生管理系统的全部功能已经完成,并且能够将学生信息数据永久保存。如果还有任何疑问,欢迎在评论区讨论或留言告诉我,我们下个视频再见!

模拟之中,小丽啊,这个题,看一下效果,可以得到这样一个小时钟, 现在时间跟我们这个时间是对得上的啊,三点二十五啊,然后在这里转动。好,我们看一下怎么实现的。 首先导引导入对应的模块啊,同样的啊,导入这个 tiktok 啊,来创建刚刚这个 g u r 的 这个窗口。接着导入什么 math 模块,用来翻转函数的一个计算啊,导入这个 time 模块,用来获取当前的时间, 定义一个字成继承字啊, tiktok 的 一个类表示什么?主窗口,然后出实化一下, 调用父类的构造函数来出实化窗口,设置表盘的中心点的 x 的 坐标为一百五啊,表盘中心点的 y 坐标呢,也为一百五, 设置指数的长度为五十啊,然后调用触发器的一个函数,出实化所有功能。再看触发器,触发器主要是什么?创建画布啊,创建背景,创建子帧,然后什么结束这个函数, 创建背景啊,通过 tick into 呢,去调用 photo image 啊,加载背景的一个图片,也就是我们的这个图片啊, local gif, 它的本身是什么?是没有这个指征的啊,没有指征的,这是我们提供的这样一个时时钟的一个圆盘啊。 然后呢,在画绘画布上呢,去绘制背景图片,接着创建画布啊,创建一个什么黑色背景的画布啊,并且用什么画布填充整个窗口,并随窗口大小调整。 这是创建移动的线条指针啊,也是这个方法能让我们看到他的指针啊,创建一个列表啊,用于存储指针,对向有三个指针吧,时针,分针,秒针啊,用循环的方式实现的, 接着呢,我们去什么调用这个 cretin 啊,时针的起点坐标,也就是我们刚刚上面写的这个啊,一百五,一百五,所以它们都在那个位置,对不对啊?时针的终点位置啊,终点的这个坐标, 接着设置这个线条的宽度为二,线条颜色为红色。最后将时针对象添加到列表中, 这个更新指正的位置定期刷新。那么是使用什么当前的一个时间,所以你可以看到那个刚刚时钟上面的时间是跟我们这里能对应上的啊,获取当前的本地时间,将小数小数数解析为时间结构,将小数数呢转换成满十二帧值, 并乘以五啊,每小时对应五个小刻度。再勾作什么一个包含十分秒的一个圆组,就用负循环啊,改变这个坐标,便利十分秒获取当前时针的一个坐标,起点坐标啊,你要出实化新的坐标列表, 然后再添加 append 计算时针中点的 x 坐标啊,基于角度和长度,同样的,计算时针中点的 y 坐标也是基于角度和长度。 然后更新什么时针的一个位置,然后结束函数,然后调用什么主函数创建主窗口的一个对象,然后什么使用一个 y 处无限循环啊, 来不断的更新窗口的内容,处理空写任务啊,更新指正的一个位置啊,这就是我们刚刚写的这个模拟时针的所有代码。

一天学一个 python 知识,今天我们来学习 p h m 的 十大插件,今天咱们给大家介绍几款非常好用的插件。首先我们进入到 python 界面之后呢,我们可以先选择左上角的 feel, 然后选择 file 里边的申请,进入到咱们的插件选项界面。那么我们首先第一个介绍的这个插件叫做中文插件啊,拆了一次,这个插件呢,可以直接汉化拍墙的界面,英语不好的伙伴呢,可以试一下,它会把咱们整个界面的英文字体变为音,变为这个中文。第二个 active pro model 好,那么这个插件的话呢,它是具有非常酷炫的效果,编码效果啊,但是对于咱们的这个眼睛来讲,很容易疲劳,很容易受不了啊,且用且珍惜啊,因为这个插件的话呢,太酷了是吧,太炫了啊,好,那么第三个咱们要 translation 全手荔枝呢,是一款用于翻译的插件,这个插件还是挺好用的,一般老师来教学的时候,我也会去跟大家讲,有些东西在大家看不懂的时候,我们可以用来翻译,包括谷歌翻译,有道翻译,你们都可以直接在拍墙里边选择需要翻译的内容。那么我们来看一下这个插件,大家在 instyle 之后呢, 我们来打开一个代码,代码里边我们任意去选中一个英文单词,就以这个 start to cool 为例,我们理解它叫状态码的意思,那么如果说你们不明白的,你们可以直接选中它右键去直译,那么这个结果呢,就会显现出来,状态码,这是我们第三个啊,这个 translucent 的 一个直译意思 好,那么在我们第三个之后呢,我们来看第四个,第四个叫 rainbow blackies, rainbow blacks, 那 么它可以让代码块之间清晰地显现出各种颜色,每个阶段分层次选中区域,代码非常高亮,包括代码错误一目了然,而且它支持呢,它一整件二十八的 go live 等多种编程语言。那么第五个啊,我们叫接生 pencil 啊,这是一个可以用于验证和格式化这个结实制服穿的清亮剂插件啊,非常便捷啊。第六个可能大家都见过的啊,叫 background image plus, 它可以用来设置 拍一下我们的背景图片,就像咱们以前玩的这个 qq 空间一样,你们可以把自己的空间设置成自己喜欢的照片,都可以啊,可以调节它的透明度。好,那么第七个, material 生命 u i 好, materialismui, 这是一个主题插件啊,这是一个主题插件,我们在正常的拍项目里边有四种主题,黑色、白色,还有一个非常酷炫的一个上镜 亮眼色啊。那么如果说大家对于咱们默认主题不是很喜欢的,大家可以去找一下这个 materialismui 这个里边的主题啊,去找一找,非常亮堂,看到没有啊,很有质感。那第八个啊,我们叫 teniss case, 这是个项目插件,用来统计整体的代码量,包括我们所有的文件代码的行数, 都可以直接统计到啊,都可以直接统计到。第九个啊,我们叫 macdaw, 大家可能在正常的抢宝中可能是一个记事本,对吧?啊? macdaw, 那 第九个咱们全名叫呢? macdaw imagehot 啊,它是一款反真器类的软件啊,允许咱们拍上直接去翻译 来,它可以允许直接去翻译,安装完毕之后呢,你重启拍上之后就可以直接进行 md 文件的直接翻译了啊, ok, 你 看 macdawn 完之后呢,你可以看一下 md 文件,对吧?啊,所以将这几款插件的话,是咱们现在目前拍成里边呢比较实用的几款插件,大家可以安装去尝试啊,玩一玩,特别适合咱们刚刚入门的新手。 ok, 那 咱们就分享到这,最后谢谢大家的观看,想要插件的小伙伴们评论六六六,主播挨个分享给你们。

开放零基础入门第四章四点二学生管理系统二这节课我们讲解学生管理系统中如何查看和删除学生信息。我们先从查看学生信息开始。 查看学生信息主要分为两个部分,第一个部分是查看所有学生信息,第二个部分是查看指定的学生信息。 在查找指定信息时,我们可以通过学号进行精准查找,从而找到对应学生的详细信息,无论是查看全部还是查找特定学生。查询过程中的关键点就是使用 for 循环, 我们需要通过 for 循环来获取 student list 的 列表中的每一条学生信息。接下来我们在受函数中做一个实现显示所有学生信息的功能。首先我们打印出展示学生信息的格式,提示用户。 接下来我们输出的学生信息会按照学号、姓名、年龄的格式输出来的。然后使用前面提到的 for 循环,逐个获取 studentlist 中储存的学生信息,并输出学生的 id name 和 h。 在 这里我们还可以使用到 zip 值,将输出的 id name 和 h 变量用空格分隔开。 现在我们打开拍唱,运行这段代码,看看是否能正常显示所有信息。选择操作五,显示所有学生在这里因为我们的 student list 列表还没有添加任何学生的信息,所以输出的是一个空表。我们可以对 student list 列表进行初步化,在这里添加上一条数据。 然后我们再次运行这段代码,依旧选择操作五,你可以看到已经将李华的信息输出来了,那么如果我们添加了学生信息之后能不能够成功显示呢? 我们先选择操作一,添加上韩梅梅同学的信息,添加之后,我们再来显示所有的学生信息,可以看到李华和韩梅梅同学的学生信息都显示出来了,这说明我们的学生管理系统不仅能够添加学生信息,还能够显示所有学生信息。 那么如果想要精准查找特定学生,应该怎么做呢?我们在 select 函数中使用 input 的 方法获取用户想要查找的学生学号,然后同样使用 for 循环,便利 studentlist 列表。 在循环中使用 if 语句判断 studentlist 列表中学生的 id 是 否与用户输入的 id 一 致,如果一致,就输出该学生的 id name 和 h, 并在输出完该同学的学生信息之后,返回一个空值,跳出这个 for 循环。 如果负循环结束,并没有查找到用户想要查找的同学,那么我们就要提示用户,您查找的同学不存在。再次打开拍唱,我们已经完善了 select 函数中的内容, 在这个里面选择,我们想要精准查找,那么就选择查询学生信息的。四、如果我想要找李华,我是不是就要输入学号一, 这里就将李华同学的学生信息输出来了,如果我输入的学号不存在的话,比如说我输入的学号是三,他也会提示我您查找的同学不存在。做到这里,学生管理系统中一半的功能就已经完成了,是不是并没有想象中那么困难? 那么接下来我们来完成一个更简单的功能,就是删除学生信息。删除功能与查找功能有些类似,我们都需要通过学号来查找想要删除的学生信息, 但是在删除该学生的学生信息之前,我们需要提示用户确认是否要删除该学生的信息。 在 delete 函数中,先用 input 获取用户想要删除的学生学号,然后通过 for 循环便利 studentlist 中所有的学生信息,将每个学生的 id 与用户输入的学号进行比较。如果找到了用户想要删除的学生信息,就先打印出该学生的信息,并询问用户是否确认删除。 如果用户输入 yes, 就 使用 remove 方法将该学生从 student list 中删除,并提示用户删除成功,返回一个空值。如果负循环结束,查找完所有的学生信息,并没有找到用户想要删除的同学,则提示用户输入的学生信息不存在。 现在我们进入拍唱实际操作一下删除功能。例如,先显示所有学生信息,目前有李华和韩梅梅两位同学,如果我们想删除李华的信息,那么我们先选择操作二,然后输入该同学的学号,李华的学号是一,那我们就删除。 这里提示我们确认删除李华同学的信息吗?我们输入 yes, 可以 看到删除成功。我们再次显示所有学生,会发现只剩下韩梅梅的信息, 说明删除功能已正常实现。现在学生管理系统中的六个功能我们已经完成了五个,只剩下修改学生信息的功能还没有做了。同学们可以思考一下 修改功能应该怎么实现。欢迎在评论区分享你的思路。如果你对以上内容还有疑问和想要以上代码作为参考的话,也可以发在评论区讨论,我们下个视频,再见。

今天带来的是用 python 来实现漫画自由,宝子们教你们怎么用代码获取会员漫画,这样就可以随时随地的随便看你爱看的漫画,不用再选择充会员看漫画了。看到我的屏幕, 我的屏幕上面的这个位置放你喜欢的漫画,就像我的这个看一点点,就需要我开会员才能正常的观看。现在回到我的代码部分运行后,就会开始下载,进入到我的本地,我们暂停看下。效果怎么样呢? 十四画是要我们充会员才能看了,可以看到是吓到了二十多画了,选择一个试下效果,嘻嘻,是能全部都能正常的观看呢哈哈哈哈哈哈。

以上是四家不同天猫平台阅账单。前面是店铺账号。首先我们把账单名称按照账号修改成店铺名称,按下代码执行,修改完成。 接着我们清洗原数据,提取下单时间,修改备注,确定分路。 数据。处理完了。 根据不同维度生成不同店铺透视表。 下单时间 b s 到账时间, 到账时间维度, 会计科目维度。 最后生成 excel, 并且一键美化 十五分钟。我可以核对完一百家店铺约账单。我要把更多时间给予深度分析,不做无意义工作。

有没有和我一样,想听歌却不想开会员刷广告?咱免费听歌时长又太麻烦?一招教你无限获取超多免费时长,直接把被动刷变成主动薅,听歌自由。这不就来了解放双手,告别手动刷视频盯倒计时的繁琐高效薅满 自动续播不中断,轻松攒够全天听歌时长,不用花一分钱就能解锁。操作简单,小白也能快速上手。现在展示实操,首先启动应用,选择音乐 app, 然后进行休眠,直到展示音乐 app 主界面。接着需要实现点击切换到我的导航栏,在循环控制的流程内, 循环模板匹配加设备操作,点击判断当前页切换成功,实现我的导航栏切换。根据领取天数进度条进行模板匹配。是新用户的界面还是老用户的界面?如新用户没有领取过奖励, 因此界面没有显示天数,老用户领取过奖励就有天数。接下来核心设计流程,低于十五天的就去执行看视频领取奖励,高于十五天就结束程序开始领取。流程内包含的动作有,点击领取和识别广告页。接下来是自动看广告的核心流程,设计 逻辑超简单,一懂好记!当页面弹出看广告领奖励的弹窗后,程序会先触发数值判断,若检测到数值为十六,直接点击退出按钮,全程运行结束。若数值非十六,立即点击领取奖励按钮, 自动进入广告播放环节。广告结束后,点击领取成功按钮,重复上述判断流程,实现看广告领奖励的无限循环。

开放每日学一个小知识,今日学习 a b s 函数。 a b s 函数的作用是获取数值的绝对值及一个数在数轴上到原点的距离,结果恒为非负。使用语法固定写法 x x 参数 x 必须是数字类型,包括整数,浮点数也支持负数。 注意要点是,一、 a b s 的 返回值永远是非负数。二、只能传数字,传字符串、列表等非数值类型会直接报错。三、整数输入返回整数,浮点数输入返回浮点数。下面将十秒案例展示,稍后提问。 提问 a b s 四十五点六的运行结果是多少?知道答案的小伙伴把答案打在评论区。

那在这个地方当我们了解了正则表达式对应的一个内容,而且呢下面呢我们也获取到了这一个相应的图片的链接,那最后一步是不是我们就可以通过这些链接去把对应的这些照片啊给它保存下来,也就是来到了我们的最后一步保存内容, 对吧?那在这个地方我们在进行内容的一个保存的时候,该怎么样去进行一个操作呢?下面是不是我们现在有非常多的这样的一些链接呀? 对吧?比方说我画一个区域,这个区域呢就叫我们的 image 这一个列表里面呢一条数据,一条数据,一条数据,非常多的一条数据, 不同的数据对应不同服务器里面的一个位置,存放的是一张照片,那在这个地方如果说我们要把它下载到一个本地, 是不?我们不可能一股脑整个全给砸过来,你又不是去搬家,你又不是这个第一,这个叫什么?呃,打车司机,对吧? ok, 那 你不拉货,你只能按部就班一点一点的走,然后说拿到一条数据过来下载一下,然后呢下载到我们的本地, 再来一条,再下载一下,再下载到我们的本地,再来一条呢?再下载一下,再下载到我们的本地。 ok, 那 在这一个过程里面我们就要用到一个什么叫做负循环的一个内容。 ok, 那 在这里面来我这里啊,先写放循环,先放一下,然后呢对应有一个变量来接收你这里面一条一条的数据,比方说我给他起名叫 i 好 吗?谁呢?从哪里来取呢? in 一个位置叫做 in 位置。 ok, 从这一个列表里面取,然后呢下面写他的循环逻辑,呃 呃,循环逻辑,哎,就是说他到底啊要去做一件什么样的事情? ok, 那 我把他这个规则啊再写的详细一点,详细一点,呃,我的, ok, 那 在这一个地方,那在这一个地方来,好嘞,给他改成什么叫做一个变量,用来承接每一条的一个数据,然后呢?下面是来源好吗?从哪来?去哪,去到哪? ok, 那 在这个地方我们来写一下啊,首先 报一下,再重新写一遍 i in 我 们的 image, 然后呢下面是它的逻辑是什么?第一个是不是我现在 i 接触到了每一个图片的地址链接呀?对吧?那有了这个链接,我是不是同样还要再来给他发起一次请求呢? request 点 get 获取它对应的一个值嘛?现在上面我获取到的是网页的值,那在这个地方我是不是就要获取我图片对应的一个值了,哎,对吧?一条一条,一条一条打印,而它呢,我同样给它返回一个结果,叫做 result, ok, result 来接收这一个值,而接收完这一个值之后,下面一步是不是它就可以开始做一个打印了呢?哎,那在这个地方进行保存的时候, python 同样给我们提供了这样的一个方法,叫做 with open, open as 一个变量名 好吗?一个变量名就是把这一个过程啊给它起一个别名,就按你们是不是这一个叫张三,叫李四,叫王五,但是回到了这一个公司里面,什么 selena, 什么这个 josey, 什么这个什么玩意了, 对吧?哎,只是一个别称而已。 ok, 那 在这里面你要传输的是什么呢?第一个是地址, 就是说你的这些文件,或者是这些图片、音频、视频等等,这些,你到底啊要把它存放在哪? 第二一个呢?叫做什么?叫做一个规则? ok, 对 应的不同的内容在存储的时候啊,他也有不同的方式,比方说你是读还是写?你是二进制还是不是二进制?你要有操作权限还是没有操作权限, 对吧?那在这个地方,针对于我们的这一个内容图片来说,它是怎么样的一个位置,放在哪呢?比方说我的这一个等会创建一个文件夹 picture 好 吗? picture 这一个路径下加上它的一个名字, ok, 加上它的一个名字, 那这个名字你也没有做一个限定啊,对吧?我怎么知道它的名字是什么?那既然说我们要 讲讲究,说我下载一个东西,那就随便给它起一个变量吧,盯一下这个数据好吗? ok, 那 给它转成一个对应的内容,叫做字母串的一个形式 n 好 吗?然后呢再加上它的一个后缀,是不是我们叫做点 g p g 一个图片呀, 对吧?下面一步是什么呢?就是我们的这一个规则,大家看到没有?对应的在这个里面规则非常的多,什么啊?这个二 b 什么加什么 w b 什么玩意儿的 a 什么玩意儿,对吗? ok, 那 这一个叫什么?读写可操作, 好吧,那对应在这个里面我们要用的是什么呢?叫做 w b right binary, 以二进制的形式写入到我们的一个本地, 因为在这里面我们在日常存储的时候,我们的音频啊,我们的视频啊,我们的图片啊等等这些内容啊,都是以二进制的形式进行了一个相应的存储, ok, 而接下来给它起一个别名,叫做什么?一个文件吧, fill, 好 吗?那在这一个地方千万不要忘记了它的小冒号哦, ok, 而下面 当我要去对它进行一个这个读的时候,我现在前面是不是获取到了一些对应的数据啊?哎,那这里我前面这一串的内容就可以用什么?用我 feel 这一个别名来进行一个替代 feel, 然后呢,后面跟上点儿一下叫什么? write, 写入嘛,对吧?然后写入的什么呢? result, 这一个结果点儿记好了,这个地方我们就不能用 text 了,而是要用什么?要用这一个 content, ok, 那 它们俩之间的一个区别是什么呢?来这里给大家讲一下啊。 content, ok, content 是 以我们的一个二进制的形式进行一个存储,而我们的这个 text 呢,是以我们的一个文本的格式进行一个存储, 也就是说刚才给大家去看它到底返回了一个什么样的数据的时候,我们用的是什么?哎,叫做 text, ok, 而现在呢,我们要用二进置的形式去进行一个写入的时候呢,我们就要返回什么,哎,二进置的一个形式,咱要保持统一嘛,对不对?你让去看,让你去看一个二进置的东西,你也看不过来,看不明白嘛, 对不对?哎,那这个样子的话,我们就已经有了,好吧,而接下来我们要来做一件什么事呢?那在这个地方我们就来右键啊,执行一下,好吧, ok, 看一下这个代码有没有问题, 好吧,这个是我们日常学习的过程中,我们会得到的一个技巧,每一次的执行当有错误的时候,我们会有一个更加 直观的认知。那来右键 wrong 一下, ok, 那 在这个地方它在报错了,对不对?第零张图片,第一张也就是我们的第一张, ok, 这里面它说报了一个 fail not found, error 文件没有被发现的一个错误,什么错误呢?来它后面有一个提示叫做 no such fail or directory, 没有这个文件或者这个文件夹, 那就是说它在这一个路径下,它找不到我的这个 picture, 对 吧?那怎么办?哎,那你找不到我就给你创建一个嘛,是吧?哎,右键给它创建一个文件叫什么叫做 picture? ok, 没写错啊, picture 好 吗?那这个地方我们就再来执行,看一下它有没有问题呢? ok, 来,那这个地方怎么来执行呢?哎,直接在我们的代码上右键,然后呢?选择这个撞 好吗?撞一下,然后呢下面他就会开始做一个执行,但是这个地方现在什么都没有,因为什么?因为我并没有给大家输出,看一下我到底啊都做了那样的一些事。好了,他这个地方执行完了,我们来看一下这里面有一个什么样的内容。来, 各位这一个小姐姐是不是已经获取下来了,对不对?但是在这个地方,咦,他为什么只有一张呢? 哎,那就说明前面的这一个地方我们哪个地方有问题?不知道大家对应的这个逻辑有没有听明白?按照这个逻辑,大家想一想,我什么地方出现了这一个问题呢? ok, 来回过头来想一想啊, 看一下对应这一个地方,对,这个地方我说每一次呢,我都会去保存一张照片,每一次都会去保存一张照片,但是这里变量名有一个改变吗? 是不是他一直都是以零这一个变量在进行用,哎,循环一次是零,循环一次是零,循环一次是零, 其他的地方连变都没变,对吧?那在这里面我们就让它变一下,每一次循环的时候呢,让它 n 加等于一, 这个句子是什么意思呢?它就类似于 n 等于 n 加一, ok, 循环每次加一加一,加一加一,对吧?那然后我们再来执行一下右键 wrong 一下, ok, 这个时候同样的还是什么都没有,但是这地方中间我来暂停一下, ok, 是 不是对应这些照片全都已经出来了呀?对吧?全都是非常可爱的小姐姐, 对吧? ok, 那 在这个地方,哎,既然说老毕你这里面可以给他规定一个名字的话,那我可不可以对于刚才的内容所对应的名字呢? 哎,如果大家有这样一个想法的话,说明你们已经开始进入到一个程序员的思维,开始啊,进行一个思考了, 那可以吗?当然没有问题,对吧?我先把下面这些内容啊给他注视一下, ok, 然后呢把上面这个内容给他放开,我们再来执行一下,看一下对应的那个位置叫什么? ok, 只用出来了啊,下面是链接,上面是我的一些内容,然后呢我们再来搜索一下, 呃,哎, image class 等于,哎,一个专引号 p i c, 好 吧, ok, 那 回来到了我的这一个点, class 等于 p i c, ok, 来到这个点,它是不是这里面有一个对应的名字叫做 alert 好 吗?叫做什么?瑜伽杠火百万的直播。那我同样的把这一些内容给它拿过来呗,哎,也就只要这一块, ok, 那 来这一个叫做 name 好吗? name 等于 r e 点我们的翻二,前面传入规则,后面传入我们的一个要解析的文件,还是这个文件,对不对? response 点 test, 只不过现在我的括号点清问号要圈给谁了 啊?是不是要圈给我们的这一个名字了呀?对吧?然后呢?哎,我们再来打印一下 print 我 们的这个 name, 哎, ok, 来,我把上面再给他注视掉啊,注视掉,我们看一下他对应的这个结果。 好,那大家可以看到,是不是这里面他产生的是两个方向,两个列表,一个列表,一个列表,对吧?哎,有同学说,老毕是不是因为你输出了两次的一个原因啊? ok, 那 在这个地方我们就按照一次来输出呗,对吧?哎,把我们的 name 也给他传入进来, 这不也就是这个地方,当你要输出多个完全不同的值的时候,是不是你中间加一个逗号,做一个间隔就可以了,对吧?哎,我们再来执行一下,看一下他有什么变化吗?看一下是不是前面还是我的这个链接,而我的名字去了哪?哎,到了最后面, 哎,老铁,这个地方好像不太对,按理来说他不应该是完成这样一件事吗?比方说这个地方是我们的 name, 然后呢?这里面有各个不同的一些数据,而对应他们不应该是一对一吗?然后说这里面的,哎,链接出来,这里面的名字出来形成一条,再来一个链接,再来一个名字,再形成一条,那你这个地方是怎么一回事啊?哎,那我就要告诉大家了, 这里面是因为我刚才前面说了,通过我们的正则表达式,他所提取出来的这一些内容,最终会保存为一个列表的类型,对吧?也就是说你在这个里面对应这两个点,是不是他提取出来两个列表啊? 我们并没有对它进行一个封装,对不对?那在这个地方我就要给大家介绍另外一个方法,叫什么?哎,先我先写啊,叫 list 先给它封起来,然后呢 zipp 再来一下, ok, 那 这是个什么玩意儿对不对?哎,我就要来写了啊,告诉大家, zipp 是 一个封装,我们都知道有这样的一个压缩文件的类型对不对?给它封装起来, ok, 给它封装起来,而 list 就是 我们那些解压软件进行一个解压,好吧,那在这个地方,那这个地方针对于对应的这一个内容,如果说你不用 list 解压的话,啊, zip 只会给你返回一个封装好的对象, ok, 可以 给大家看一下,同样的再来一个 print, print 里面呢?我只传入我们的 zip, 然后呢里面传入我们的 image, 还有我们的 name, ok, 我 们就来看一下它的这个结果到底是什么?看一下看到没有?第一个 zip 是 一个对象,而第二一个 zip 是 不是我对应的,哎?一个链接对应一个文字 好吗?这玩意实际上本身也是我们 python 的 一个特性导致的,我是不是之前跟大家说过,现在市面上 python 占存两个版本,一个是我们的 python 二,另外一个是我们的一个 python 三,好吧,那在这一个地方,哎,实际上 对应这个内容是在三点六之后,它进行了一个区分,好吧,在这之前干嘛呢?它都是可以进行一个解析的,但是在这之后它就解析不了了, 好吧,解析不了了。而对应这个点啊,实际上三点六只是说我们常用到的一个版本,你可以对它进行一个忽略,改成什么?就是以三作为一个区间。好吧,前面是直接 f, 我 可以看内容,但是到了后面之后呢, 哎,我需要对大家进行一个解析,因为他太占内存了,就看这个地方他展示了多少东西就行了。好吧,那也就是说下面,哎,我这个内容啊,就要改了,我要把我的这个名字给他加进去啊,怎么加呢?还是要用到我们的一个放循环 来写一下否一下, ok, 只不过对应这个地方就有两个变量了,它们用来承接什么呢?哎,我 zip 里面封装好的 image 和我们的这个 name, ok, i 接收的是以内的这一个变量, n 接收的是我内幕的这一个变量, ok, 当我们这两个变量给它接收出来之后,下一步我们就要干嘛对它进行一个相应的请求?步骤是一样的,来, result 等于什么呢? request 点儿我们的一个 get 里面呢?同样传入我们的 i 这一个变量,只不过下面,哎,我就不需要用再去加 e 或者怎么样了,直接干嘛呢? with open。 呃,我懒得写了,我就把上面这一些直接给复制过来了。 hello, 哎, ok, 那 只不过这个地方名字是什么呢?是我们的一个 name, ok, 那 接下来我们再来执行一下,看一下它的一个结果, 来,同样的,我们右键给它 wrong 一下,好吧,那这个地方看到是不是又报错误了?他说什么?他没有找到对应的这一个文件夹,什么 picture 下面吱一串的一个内容,哎,那这个地方又什么地方出错了呢?哎,回过头来, 哎,还记得前面我说的否循环的一个点吗?对不对?它在这里面是不是否循环对应的一个变量接收了我列表里面的一条信息, 而在这里面我所传入的这个数据是什么?叫做内幕,是不?我直接把这个列表给它传进来了,那哪能行吗?对吧?而内幕里面的这个数据,我给到的是谁啊?是不是给到的是我们的这个 n 啊? 对吧?哎,所以说大家在写代码的时候一定要细致细致,再细致,千万不要像老 b 这样,哎,粗心大意,对吧?那在这地方我们就再来给他执行一下,右键撞一下, 好吧? ok, 这一步,然后呢,他下面开始执行,执行,这一会我就先给他关一下,好吧,那对应过来的,我们再来看一下我图片里面的数据,下面是不是就多出来了一些带有直播间标签的文字呀?对吧?但是这些东西来,我打开这个文件夹啊, 我打开这个文件夹,然后呢,对应把这一些小姐姐先全都给他删一下,太多了,占内存 好吗?那在这个地方我也看不到它打印的一个流程啊,那我们就多多少少做点改进嘛,输出用的是什么?用的是哪个关键字?是不是我们的这个 print, 对 吧?然后呢,这个地方有名字对不对?给它加上点东西呗,打印完成 好吗?打印完成,然后呢?对应这一个代码,来我们啊再来给它执行一下好吗?右键 run 一下, ok, ok, 那 现在是不是就已经可以看到一个结果了,打印的非常快,而且他是在自己进行打印 对吧?而我对应的这些小姐姐是不是在这个地方也都进行了一个展现,对吧?呃,一共是六十五个,我这地方是不是也是差不下载大概最后一个,看他最后一个人名不就行了吗?重心,雪梨的直播重心,呃,哎 哎,哪去了?找不到了,搜索一下 ctrl f 好 吗?叫做我,我把我把这个名字给它拿过来它这里面,哦,我的文件夹给我进行了一个自动的排版好吗?给它拿过来看一下有没有好吗?来这个地方 下一个好吗?重心,雪梨的直播打印完成看了吗?是不是这玩意是我进行一个单独的一个下载啊, 对吧?那到这一个地方,哎,我对应的这个爬虫去获取我这一些图片的一个地址,这么一个方式就已经完成了。 而在这个里面大家所涉及到的一个内容,包括我们的变量,包括我们的赋值函数,关键字模块,数据类型,数据类型里面是不是给大家讲解了两个,一个叫做我们的字典,另外一个是不是叫做我们的一个列表啊? 对吧?而再往下我们的正则表达式负循环以及我们的 with open 进行一个保存啊,不知道大家有没有听明白呢? 如果说没有听明白或者说不太了解的地方可以干嘛呢?拿到我的这一个代码,按照我的代码自己啊去执行一下,去体验一下其中所包含的这一个趣味, 最终你就可以在晚上的时候左手拿手机,右手做运动,白天的时候就多喝一点汇源肾宝吧, ok。

分享一段动画, python 写的,先运行一下,这是一个时钟获取当前的系统的时间,然后根据当前的 小时分钟还有秒的数,然后画出它的这个秒针,时针,还有分针的这个位置的动画, 通过按上或者下键可以调整这个始终的界面的大小。 我们看一下代码怎么写的。代码同样使用了 p y game 这个拍成库,然后引入了 入学库和时间日期这个库。我们从慢函数开始, 这是一些全局变量, f, p s, 然后窗口,窗口的标题字体生成 c 函数字典值,然后画背景, 这个同样可以暂停 icon 呢,可以暂停画背景,画函数信息就是上面这个日期信息,画时针秒,这是分针,然后是键盘世界。 我们看一下画时间信息,就是我们拿到当前的 时间之后,这个是从下面传过来的。在在在在在这 this time 点 now 获取到这个,然后把它格式串一下格式,嗯,格式化一下,发到这这这个位置就可以, 然后是画这个背景,背景的话我画了三个圆圈大的圆圈在这个外面,然后是画始终上的数字,始终上的数字位置就是每隔三十度 啊,去找到他的这个位置,我们把 把它的这个位置算出来,在这个位置上贴上对应的数字直接信息,主要是这个 时针,分针、秒针,这个其实也一样,我们拿到它的小时数,如果是二十四小时记的话,我们要对十二取,拿到它的 当前的小时数,然后乘以三十度,因为一小时,然后就拼音量是三十度,然后再加上就是因为我们是从这边开始的,所以其其实上这个应该是 cosine 的那个曲线 啊,对应的 x 也算出来,这是那个半径的值,就是秒针或者时针分针的长度,这是那个坐标原点,也就是我们表的这个中心, 把三个时针、分针、秒针给画出来,效果还可以,代码已经上传到仓库了,感兴趣的话可以研究一下。

我们有时扒取页面信息,要是请求中带有加密参数,并且还带有 token 字段,而且这个字段带有实效性,这样请求页面 row 获取信息就比较麻烦。这时通过 c o e m 绕过这个阶段 直接获取 grvskp 最终渲染完成的页面原代码,再从中获取数据即可。这个电影网站 ajx 请求带有参数进入电影详情页的 url 和首页的不一样,详情页后面跟的 a 是一个长字符串, 所以我们无法直接根据规律构造详情页的 you are live。 通过观察详情页的 a jacks 接口数据,发现接口参数多了一个 token 字段。像这种网站可以直接用 c o e name 获取其数据。导入程序所需 的拍饭库。 定义一些必须的变量。 定义抓取列表页的方法。 定义获取详情页数据的 方法。 定义保存数据的方法。 将之前定义的方法组合起来, 运行程序, 查看结果。