<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          幾行代碼,網(wǎng)盤鏈接提頭來見!

          共 4462字,需瀏覽 9分鐘

           ·

          2021-08-09 19:44

          文 | 閑歡

          來源:Python 技術(shù)「ID: pythonall」

          背景

          晚上,女朋友下班回來,我邀請(qǐng)她下樓去散步,她一副愁眉苦臉的樣子,說今晚要加班。

          仔細(xì)詢問之下得知:女朋友今天接到上司一個(gè)任務(wù),領(lǐng)導(dǎo)丟給她一個(gè)文件,里面密密麻麻滿是百度網(wǎng)盤鏈接和提取碼,需要她今天結(jié)束之前把網(wǎng)盤里的文件提取出來。

          聽到她說要熬夜肝工作那種委屈的模樣,我是真的有點(diǎn)心疼。于是本能地問她,現(xiàn)在工作中最影響效率的是哪個(gè)環(huán)節(jié),我來幫她一起肝。她告訴我,看這個(gè)百度網(wǎng)盤的鏈接看得眼都花了,要復(fù)制鏈接,以及復(fù)制提取碼是個(gè)技術(shù)活,因?yàn)橛衅渌淖指蓴_,經(jīng)常復(fù)制不準(zhǔn)。

          鏈接類似下面這樣的:

          鏈接: https://pan.baidu.com/s/1ctcXiZymWst2NC_JPDkr4Q 提取碼: j1ub 復(fù)制這段內(nèi)容后打開百度網(wǎng)盤手機(jī)App,操作更方便哦

          想必大家看到這個(gè)鏈接,都不會(huì)陌生。不止百度網(wǎng)盤,還有好多網(wǎng)盤都是這樣的。

          既然這樣,那我當(dāng)然要幫她解決這個(gè)棘手的問題。

          思路

          其實(shí)她的需求很簡(jiǎn)單,把網(wǎng)盤鏈接和對(duì)應(yīng)提取碼從這個(gè)分享文字中提取出來。

          解決這個(gè)需求只需要用正則表達(dá)式匹配分享文字中的 URL 和提取碼就行了。

          實(shí)現(xiàn)解析

          代碼很簡(jiǎn)單,直接上:


          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)

          接下來,測(cè)試一下:

          str = '鏈接: https://pan.baidu.com/s/1ctcXiZymWst2NC_JPDkr4Q 提取碼: j1ub 復(fù)制這段內(nèi)容后打開百度網(wǎng)盤手機(jī)App,操作更方便哦'
          print(url_regex.findall(str)[0])
          print(code_regex.findall(str)[0])

          可以在控制臺(tái)上看到打印輸出兩行,第一行是鏈接,第二行是提取碼:

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

          幾行代碼一敲,事情就這么搞定了!

          等等,這太程序員思維了!

          現(xiàn)在還只是個(gè)程序,難道要她把一段段文字復(fù)制到我的程序里面再運(yùn)行?這不是更麻煩嗎???

          就這?

          當(dāng)然不行,我還是有點(diǎn)產(chǎn)品素養(yǎng)的!

          當(dāng)然要給個(gè)界面給她。我搜索了下我的知識(shí)庫(kù),準(zhǔn)備用 tkinter 來畫一個(gè)簡(jiǎn)單的界面給她使用。

          其實(shí)現(xiàn)如下:

          def draw_window(self):
                  self.init_window = Tk()  # 實(shí)例化出一個(gè)父窗口
                  self.init_window.title("百度網(wǎng)盤提取鏈接工具_(dá)v1.0")  # 窗口名
                  self.init_window.geometry('800x300+10+10')
                  # 源信息
                  self.init_data_label = Label(self.init_window, text="復(fù)制的提取信息")
                  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")  # 原始數(shù)據(jù)錄入框
                  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)  # 調(diào)用內(nèi)部方法  加()為直接調(diào)用
                  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)

          上面就是畫一個(gè)界面的代碼,運(yùn)行之后長(zhǎng)這樣:

          界面

          丑是丑了點(diǎn),但是時(shí)間緊,任務(wù)重,先用起來再說。

          和解析代碼合體之后,正常的運(yùn)行情況應(yīng)該是這樣的:

          運(yùn)行

          當(dāng)然,還可以進(jìn)一步改造,比如獲取到網(wǎng)盤鏈接和提取碼之后,直接使用 selenium 來自動(dòng)控制瀏覽器打開相應(yīng)的百度網(wǎng)盤頁(yè)面,女朋友直接在頁(yè)面選擇文件點(diǎn)擊下載即可。

          但是今晚時(shí)間不夠了,先讓她用著。

          總結(jié)

          處理一個(gè)簡(jiǎn)單的需求,咱們就用到了正則、畫界面,還可以使用瀏覽器模擬操作的 selenium ,可見平時(shí)的知識(shí)積累多重要。小伙伴們平時(shí)還是要有意識(shí)積累一些實(shí)用的技術(shù),當(dāng)需求來時(shí)方可信手拈來,而不是“書到用時(shí)方恨少”!

          推薦閱讀


          Pandas處理數(shù)據(jù)太慢,來試試Polars吧!
          懶人必備!只需一行代碼,就能導(dǎo)入所有的Python庫(kù)
          絕!關(guān)于pip的15個(gè)使用小技巧
          介紹10個(gè)常用的Python內(nèi)置函數(shù),99.99%的人都在用!
          可能是全網(wǎng)最完整的 Python 操作 Excel庫(kù)總結(jié)!

          瀏覽 50
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲图色色 | 九九九九精美视频 | 爆操小逼 | 狂欢综合网 | 亚洲免费情毛片 |