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

  • 相关阅读:
    [ZZ]C++中,引用和指针的区别
    面试总结之JAVA
    LeetCode 347. Top K Frequent Elements
    LeetCode 342. Power of Four
    腾讯//删除链表中的节点
    腾讯//删除链表中的节点
    腾讯//相交链表
    腾讯//相交链表
    腾讯//环形链表 II
    腾讯//环形链表 II
  • 原文地址:https://www.cnblogs.com/guyuecanwu/p/9821591.html
Copyright © 2020-2023  润新知