在爬取百度图片时, 遇到了加密的加密的图片url,如下所示:
"objURL":"ippr_z2C$qAzdH3FAzdH3Fwppwvi4jgpf_z&e3B2uwg_z&e3Bv54AzdH3Fu5674AzdH3Fwppwvi4jgpfdAzdH3Fda8na9AzdH3FnaAzdH3F8baad9mohbbs9ks7bm1o0s_z&e3B3r2"
解析加密url的方法如下所示:
def decode_url(url):
"""
对百度加密后的地址进行解码
:param url:百度加密的url
:return:解码后的url
"""
table = {'w': "a", 'k': "b", 'v': "c", '1': "d", 'j': "e", 'u': "f", '2': "g", 'i': "h",
't': "i", '3': "j", 'h': "k", 's': "l", '4': "m", 'g': "n", '5': "o", 'r': "p",
'q': "q", '6': "r", 'f': "s", 'p': "t", '7': "u", 'e': "v", 'o': "w", '8': "1",
'd': "2", 'n': "3", '9': "4", 'c': "5", 'm': "6", '0': "7",
'b': "8", 'l': "9", 'a': "0", '_z2C$q': ":", "_z&e3B": ".", 'AzdH3F': "/"}
url = re.sub(r'(?P<value>_z2C\$q|_z\&e3B|AzdH3F+)', lambda matched: table.get(matched.group('value')), url)
return re.sub(r'(?P<value>[0-9a-w])', lambda matched: table.get(matched.group('value')), url)