文 | 闲欢

来源:Python 技术「ID: pythonall」

背景

晚上,女朋友下班回来,我邀请她下楼去散步,她一副愁眉苦脸的样子,说今晚要加班。

仔细询问之下得知:女朋友今天接到上司一个任务,领导丢给她一个文件,里面密密麻麻满是百度网盘链接和提取码,需要她今天结束之前把网盘里的文件提取出来。

听到她说要熬夜肝工作那种委屈的模样,我是真的有点心疼。于是本能地问她,现在工作中最影响效率的是哪个环节,我来帮她一起肝。她告诉我,看这个百度网盘的链接看得眼都花了,要复制链接,以及复制提取码是个技术活,因为有其他文字干扰,经常复制不准。

链接类似下面这样的:

链接: https://pan.baidu.com/s/1ctcXiZymWst2NC_JPDkr4Q 提取码: j1ub 复制这段内容后打开百度网盘手机App,操作更方便哦

想必大家看到这个链接,都不会陌生。不止百度网盘,还有好多网盘都是这样的。

既然这样,那我当然要帮她解决这个棘手的问题。

思路

其实她的需求很简单,把网盘链接和对应提取码从这个分享文字中提取出来。

解决这个需求只需要用正则表达式匹配分享文字中的 URL 和提取码就行了。

实现解析

代码很简单,直接上:


url_pattern = 'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+'
code_pattern = '(?<=提取码: )[0-9a-z]{4}'
url_regex = re.compile(url_pattern)
code_regex = re.compile(code_pattern)

接下来,测试一下:

str = '链接: https://pan.baidu.com/s/1ctcXiZymWst2NC_JPDkr4Q 提取码: j1ub 复制这段内容后打开百度网盘手机App,操作更方便哦'
print(url_regex.findall(str)[0])
print(code_regex.findall(str)[0])

可以在控制台上看到打印输出两行,第一行是链接,第二行是提取码:

https://pan.baidu.com/s/1ctcXiZymWst2NC_JPDkr4Q j1ub

几行代码一敲,事情就这么搞定了!

等等,这太程序员思维了!

现在还只是个程序,难道要她把一段段文字复制到我的程序里面再运行?这不是更麻烦吗???

就这?

当然不行,我还是有点产品素养的!

当然要给个界面给她。我搜索了下我的知识库,准备用 tkinter 来画一个简单的界面给她使用。

其实现如下:

def draw_window(self):self.init_window = Tk()  # 实例化出一个父窗口self.init_window.title("百度网盘提取链接工具_v1.0")  # 窗口名self.init_window.geometry('800x300+10+10')# 源信息self.init_data_label = Label(self.init_window, text="复制的提取信息")self.init_data_label.grid(row=0, column=0)self.init_data_text = Text(self.init_window, width=100, height=5, borderwidth=1, relief="solid")  # 原始数据录入框self.init_data_text.grid(row=1, column=0, columnspan=10)# 按钮self.str_trans_button = Button(self.init_window, text="提取", width=10, height=2, bg="blue",command=self.extractData)  # 调用内部方法  加()为直接调用self.str_trans_button.grid(row=2, column=2)# 链接self.link_data_label = Label(self.init_window, width=10, text="链接")self.link_data_label.grid(row=3, column=0, columnspan=1)self.link_data_text = Text(self.init_window, width=60, height=2, borderwidth=1, relief="solid")self.link_data_text.grid(row=3, column=1, columnspan=6)# 提取码self.code_data_label = Label(self.init_window, width=10, text="提取码")self.code_data_label.grid(row=3, column=7, columnspan=1)self.code_data_text = Text(self.init_window, width=20, height=2, borderwidth=1, relief="solid")self.code_data_text.grid(row=3, column=8, columnspan=2)

上面就是画一个界面的代码,运行之后长这样:

界面

丑是丑了点,但是时间紧,任务重,先用起来再说。

和解析代码合体之后,正常的运行情况应该是这样的:

运行

当然,还可以进一步改造,比如获取到网盘链接和提取码之后,直接使用 selenium 来自动控制浏览器打开相应的百度网盘页面,女朋友直接在页面选择文件点击下载即可。

但是今晚时间不够了,先让她用着。

总结

处理一个简单的需求,咱们就用到了正则、画界面,还可以使用浏览器模拟操作的 selenium ,可见平时的知识积累多重要。小伙伴们平时还是要有意识积累一些实用的技术,当需求来时方可信手拈来,而不是“书到用时方恨少”!

推荐阅读

Pandas处理数据太慢,来试试Polars吧!

懒人必备!只需一行代码,就能导入所有的Python库

绝!关于pip的15个使用小技巧

介绍10个常用的Python内置函数,99.99%的人都在用!

可能是全网最完整的 Python 操作 Excel库总结!

几行代码,网盘链接提头来见!相关推荐

  1. 几行代码,网盘链接提头来见

    背景 晚上,女朋友下班回来,我邀请她下楼去散步,她一副愁眉苦脸的样子,说今晚要加班. 仔细询问之下得知:女朋友今天接到上司一个任务,领导丢给她一个文件,里面密密麻麻满是百度网盘链接和提取码,需要她今天 ...

  2. 用 puppeteer 模拟人工实现网盘链接批量转存

    需求分析 别人分享了很多网盘链接,自己每个手动去转存很浪费时间,而且,这些操作都是重复性劳动.与Pandownload的这个功能类似,不过pandownload由于一些原因无法使用了,所以只能自己实现 ...

  3. javascript俄罗斯方块 面向对象编程(jQuery)(附带百度网盘链接)

    这个俄罗斯方块游戏是通过javascript面向对象编程的方法编写,代码结构分为游戏类(Game.js),方块类(block.js),地图类(Map.js),方块形状对象类(blockjson.js) ...

  4. 纯前端可视化大屏-免费分享(内含百度网盘链接)

    这是我Web课程设计中的一个界面--大屏展示,采用Echarts技术和纯前端来实现的. ECharts,缩写来自Enterprise Charts,商业级数据图表,一个纯Javascript的图表库, ...

  5. python基础教程第三版豆瓣-数据结构与算法必读书单吐血整理推荐【附网盘链接】...

    前言:技术书阅读方法论 一.速读一遍(最好在1~2天内完成) 人的大脑记忆力有限,在一天内快速看完一本书会在大脑里留下深刻印象,对于之后复习以及总结都会有特别好的作用. 对于每一章的知识,先阅读标题, ...

  6. 重磅----股票风险指标计算,附程序,百度网盘链接

    今天我们放假,回贵阳,准备实习,我也可以专心的去研究自己感兴趣的方向,我们计算股票指标包括beta,alpha,最大回撤,在险价值等,指标很多,我就不仔细介绍了,今天挺累的,我们直接看效果,弄成了图形 ...

  7. KITTI Semantic点云数据集 网盘链接

    数据集介绍 SemanticKITTI 由德国波恩大学的研发团队开发的大型户外场景数据集,是自动驾驶领域的权威数据集.它基于 KITTI 数据集,对 KITTI Vision Odometry Ben ...

  8. python爬虫基础教程115_Python解析网页源代码中的115网盘链接实例

    本文实例讲述了python解析网页源代码中的115网盘链接的方法.分享给大家供大家参考.具体方法分析如下: 其中的1.txt,是网页http://bbs.pediy.com/showthread.ph ...

  9. 数据结构教程网盘链接_数据结构101:链接列表

    数据结构教程网盘链接 by Kevin Turney 凯文·特尼(Kevin Turney) Like stacks and queues, Linked Lists are a form of a ...

最新文章

  1. Spring Cloud Alibaba 之 RPC 消息:Dubbo 与 Nacos 体系如何协同作业
  2. css 联系我们,CSS3 模态窗口联系我们表单模板
  3. 把代码放到服务器文件夹,怎么将本地代码传到云服务器
  4. AngularJS快速入门指南04:指令
  5. 从 Spring Cloud 看一个微服务框架的「五脏六腑]
  6. 安全 - 堡垒机 - Jumpserver
  7. Android studio的sdk tools下没有LLDB的解决办法
  8. VB与Java颜色值的转换
  9. app 后台_uni星茫UI V3.0更新uni-app多端小程序源码丸子插件wordpress后台
  10. php 将前端网页输出成unicdoe编码
  11. jenkins修改pom文件_自动化部署—Jenkins+Docker构建工程
  12. requests模块报错:Use body.encode('utf-8') if you want to send it encoded in UTF-8.
  13. 填坑-十万个为什么?(18)
  14. enet分割_论文阅读 | CVPR 2016 | 语义分割论文: ENet
  15. POJ3420 Quad Tiling【矩阵快速幂】
  16. 怎样调整input框背景颜色_不用花钱,自己也能制作证件照,更换背景色、排版全搞定...
  17. PHP 常用算法集锦
  18. MYSQL存储过程的简单运用,包括传值、返回值、返回集合
  19. 什么是Pid、Uid、Tid?此篇让你大彻大悟
  20. 反欺诈概念库-信用卡反欺诈管理

热门文章

  1. android blockcanary 原理,blockCanary原理
  2. PHP7 serialize_precision 配置不当导致 json_encode() 浮点小数溢出错误
  3. 养成这6个编程好习惯,助你减少90%BUG
  4. 反思网络中的观点:太过杂乱 需要很强的甄别能力
  5. TP、Yii、Laravel的区别
  6. 12v电量显示制作方法_如何制作老式12v充电器(四款12v充电器设计制作详解)
  7. h5移动端如何让页面强制横屏
  8. android+5.0+ble,android5.0(Lollipop) BLE Peripheral牛刀小试(示例代码)
  9. java为什么复制数组会减一_如果从数组中复制了Java,为什么Java需要对最终变量进行显式强制转换?...
  10. smarty模板概念及应用场合