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編輯器中正常運行,其它方式運行可能會提示存在編碼問題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM