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