• 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编辑器中正常运行,其它方式运行可能会提示存在编码问题

  • 相关阅读:
    一文掌握Docker Compose
    Flannel配置详解
    Helm二:安装
    Helm一:简介
    ubuntu内核及系统升级
    Ogre 编辑器一(MyGUI+Ogre整合与主界面)
    MyGUI 解析
    Ogre 监听类与渲染流程
    OpenGL 阴影之Shadow Mapping和Shadow Volumes
    Ogre RTSS组件解析
  • 原文地址:https://www.cnblogs.com/guyuecanwu/p/9821591.html
Copyright © 2020-2023  润新知