1. 程式人生 > >URL處理----拼接和編碼

URL處理----拼接和編碼

        ps:浪了好幾周,我的鍋。。。

        前幾天想爬取一個使用者網站自動建立每個使用者的資料方便註冊一些賬號,想寫一個通用點的爬蟲程式爬取只要配置一些爬取規則、爬取深度就ok,避免程式碼改動,由於時間關係只完成的個半成品,後面在考慮是用xml檔案作為配置檔案,還是簡單的使用.ini檔案,後者雖然簡單但侷限性太大,所以,,,偷幾天懶順便重新考慮下邏輯。

==================================================================================================================================================          

        既然想通用一些,那url的一些處理必不可少,如拼接、中文編碼和空格編碼等問題,從網上找了下比較瑣碎,所以自己簡單封裝了一個,主要處理了下url拼接和中文編碼的問題。

執行環境:python3 、pycharm編輯器

程式碼如下:

 1 # -*- coding: utf-8 -*-
 2 # au: cpy
 3 # 20181016
 4 # url拼接和編碼問題
 5 import re
 6 from urllib.parse import urljoin,quote
 7 
 8 
 9 def check_zh(word):
10 list_zh = re.findall('[\u4e00-\u9fa5]+',word) # 正則匹配存在的中文 11 if list_zh: 12 for zh in list_zh: 13 word = re.sub(zh,quote(zh),word) 14 # print(word) 15 return word 16 17 18 def checkUrl(domain, url): # domain:域名 19 if type(url) is not str and hasattr(url, "
decode"): 20 url = url.decode() 21 if not url.startswith("http"): 22 url = urljoin(domain, url) 23 url = check_zh(url) 24 return url 25 26 if __name__ == '__main__': 27 domain = "https://www.baidu.com/" 28 # postfix_url = "s?ie=UTF-8&wd=python3判斷字串中是否有中文" 29 url = "s?ie=UTF-8&wd=python3判斷字串中是否有中文" 30 print(url) 31 print(checkUrl(domain, url)) 32 ''' 33 結果: 34 s?ie=UTF-8&wd=python3判斷字串中是否有中文 35 https://www.baidu.com/s?ie=UTF-8&wd=python3%E5%88%A4%E6%96%AD%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E6%98%AF%E5%90%A6%E6%9C%89%E4%B8%AD%E6%96%87 36 '''

ps: 程式碼在pycharm編輯器中正常執行,其它方式執行可能會提示存在編碼問題