<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>

          Python竟然能把“長(zhǎng)的”變成“短的”?

          共 1906字,需瀏覽 4分鐘

           ·

          2022-05-31 15:13


          最近我遇到了一些問(wèn)題:需要將幾百條長(zhǎng)鏈接轉(zhuǎn)成短鏈接。經(jīng)過(guò)一番學(xué)習(xí),發(fā)現(xiàn)Python可以輕松解決這個(gè)問(wèn)題,不僅可以實(shí)現(xiàn)縮短【長(zhǎng)鏈接→短鏈接】,也可以實(shí)現(xiàn)還原【短鏈接→長(zhǎng)鏈接】。

          一條長(zhǎng)鏈接

          縮短鏈接

          【長(zhǎng)鏈接→短鏈接】縮短鏈接,就是把長(zhǎng)的要死的鏈接,縮短到只有幾個(gè)字符那么長(zhǎng)。

          這么做是為了什么呢?打個(gè)比方,如果你們公司搞了一個(gè)活動(dòng),需要群發(fā)營(yíng)銷短信,結(jié)果單單活動(dòng)鏈接就占據(jù)了一頁(yè),那就會(huì)非常影響活動(dòng)效果了。

          某機(jī)構(gòu)營(yíng)銷短信

          所以公司機(jī)構(gòu)往往會(huì)使用短鏈接,將其應(yīng)用于活動(dòng)推廣、短信推廣、郵件推廣、社交推廣、APP推廣等。

          如果使用Python去實(shí)現(xiàn)批量縮短長(zhǎng)鏈接,可以怎么做呢?

          第一時(shí)間想起來(lái)的就是百度短網(wǎng)址,兩年前練習(xí)還調(diào)用過(guò)他們的api,結(jié)果發(fā)現(xiàn)今年4月1日就無(wú)法個(gè)人使用了,gg

          調(diào)用 百度短網(wǎng)址 報(bào)錯(cuò)

          如果你有服務(wù)器,可以自己搭建一個(gè)短鏈接工具。要么就是使用免費(fèi)/付費(fèi)的

          免費(fèi)

          免費(fèi)的網(wǎng)站有很多,但并不穩(wěn)定,有跑路風(fēng)險(xiǎn)。干脆只推薦一個(gè)工具箱聚合網(wǎng)站:一個(gè)木函(https://ol.woobx.cn/tool/url-shortener

          短網(wǎng)址在線生成(一個(gè)木函)

          如果想使用Python調(diào)用,可以抓包該網(wǎng)站轉(zhuǎn)換時(shí)的請(qǐng)求,并將curl請(qǐng)求命令轉(zhuǎn)Python請(qǐng)求代碼。具體用法可以參考之前的文章:每一個(gè)搞爬蟲的人,都應(yīng)該知道的神器!

          付費(fèi)

          免費(fèi)爽一時(shí),付費(fèi)一直爽。如果想要保證生成短鏈接的穩(wěn)定,可以試試付費(fèi)方式,這種網(wǎng)站就不進(jìn)行推薦了。

          付費(fèi)自然不需要去抓包接口了,直接調(diào)用即可。

          某付費(fèi)短鏈接網(wǎng)站

          在交互式環(huán)境中輸入如下命令:

          from?urllib.parse?import?quote
          import?requests
          import?json

          #?先對(duì)要縮短的網(wǎng)址進(jìn)行urlencode編碼
          url?=?"https://mp.weixin.qq.com/s?__biz=MzU5Nzg5ODQ3NQ==&mid=2247521340&idx=1&sn=90bdde598d4a8f14f582387e702c2c2f&chksm=fe4eb1b8c93938ae18f605a5e42d08c4ab7a83ee2d5a03b27763126e64d77cd1600cf256eb01#rd"
          url?=?quote(url)
          key?=?"***********************"

          #?請(qǐng)求api接口對(duì)url進(jìn)行縮短
          html?=?requests.get(f"http://api.3w.cn/api.htm?format=json&url={url}&key={key}&expireDate=2050-01-01&domain=21").content
          data?=?json.loads(html.decode('utf-8'))?
          print(data["url"])

          輸出:

          http://suo.nz/1FyT2P

          在上述代碼中,我們首先對(duì)要縮短的網(wǎng)址進(jìn)行urlencode編碼,接著請(qǐng)求api接口對(duì)url進(jìn)行縮短。

          為什么需要urlencode編碼?

          URL參數(shù)字符串中使用key=value鍵值對(duì)這樣的形式來(lái)傳參,如果value字符串中包含了=或者&,那么會(huì)造成接收Url的服務(wù)器解析錯(cuò)誤,因此必須將引起歧義的&和=符號(hào)進(jìn)行轉(zhuǎn)義,也就是對(duì)其進(jìn)行編碼[1]。

          還原鏈接

          在前文中,我們實(shí)現(xiàn)了Python調(diào)用接口自動(dòng)縮短鏈接。那么反之,如何還原鏈接呢?

          【短鏈接→長(zhǎng)鏈接】比起前面的操作,這就簡(jiǎn)單多了,只需要4行代碼[2]。

          在交互式環(huán)境中輸入如下命令:

          import?requests

          url?=?"https://sourl.cn/AWeBWs"
          res?=?requests.head(url)
          print(res.headers.get('location'))

          輸出:

          鏈接的縮短與還原,可能有些冷門,但是對(duì)于需要的人來(lái)說(shuō)還是挺實(shí)用的,希望對(duì)大家有幫助!

          參考資料

          [1]

          Python+requests 之urlencode編碼與解碼: https://blog.csdn.net/weixin_43507959/article/details/106578516

          [2]

          黃偉呢: 數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)之美


          END



          推薦閱讀


          牛逼!Python常用數(shù)據(jù)類型的基本操作(長(zhǎng)文系列第①篇)

          牛逼!Python的判斷、循環(huán)和各種表達(dá)式(長(zhǎng)文系列第②篇)

          牛逼!Python函數(shù)和文件操作(長(zhǎng)文系列第③篇)

          牛逼!Python錯(cuò)誤、異常和模塊(長(zhǎng)文系列第④篇)


          吳恩達(dá)deeplearining.ai的經(jīng)典總結(jié)資料


          Ps:從小程序直接獲取下載

          瀏覽 28
          點(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>
                  久久精品福利免费视频 | 国产三级一区 | 一区二区三区四区高清无码 | 免费xx视频 | 麻豆三极片 |