URL处理----拼接和编码

        PS:浪了好几周,我的锅......

        前几天想爬取一个用户网站自动创建每个用户的资料方便注册一些账号,想写一个通用点的爬虫程序爬取只要配置一些爬取规则,爬取深度就ok了,避免代码改动,由于时间关系只完成的个半成品,后面在考虑是用XML文件作为配置文件,还是简单的使用的.ini文件,后者虽然简单但局限性太大,所以,,,偷几天懒顺便重新考虑下逻辑。

================================================================================================既然想通用一些,那url的一些处理必不可少,如拼接、中文编码和空格编码等问题,从网上找了下比较琐碎,所以自己简单封装了一个,主要处理了下url拼接和中文编码的问题。

运行环境:python3,pycharm编辑器

代码如下:

# -*- coding: utf-8 -*-
# au: cpy
# 20181016
# url拼接和编码问题
import re
from urllib.parse import urljoin,quote


def check_zh(word):
    list_zh = re.findall('[\u4e00-\u9fa5]+',word)  # 正则匹配存在的中文
    if list_zh:
        for zh in list_zh:
            word = re.sub(zh,quote(zh),word)
            # print(word)
    return word


def checkUrl(domain, url): # domain:域名
    if type(url) is not str and hasattr(url, "decode"):
        url = url.decode()
    if not url.startswith("http"):
        url = urljoin(domain, url)
    url = check_zh(url)
    return url

if __name__ == '__main__':
    domain = "https://www.baidu.com/"
    # postfix_url  = "s?ie=UTF-8&wd=python3判断字符串中是否有中文"
    url  = "s?ie=UTF-8&wd=python3判断字符串中是否有中文"
    print(url)
    print(checkUrl(domain, url))
    '''
    结果:
    s?ie=UTF-8&wd=python3判断字符串中是否有中文
    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
    '''



ps:代码在pycharm编辑器中正常运行,其它方式运行可能会提示存在编码问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值