I have an encoded string, payload, of a request that I want to uncompress.
payload = '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'
My process / goal is explained here. However, I want to stay with Python.
First, I believe I need to decompose the data. With the help of this answer I write:
import base64
payload_in_bytes = base64.b64decode(payload)
Next, I assume that the end-result is a dictionary so I use json.loads() as the documentation states it accepts bytes.
import json
data = json.loads(payload_in_bytes)
However, this results in a UnicodeDecodeError:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position
1: invalid start byte
What am I doing wrong?
Here is a possible solution using gzip()
import base64
import gzip
import json
payload = 'H4sIAAAAAAAAA+19bXMcN5LmX2Fw76NIIZFAAvA3e+yddax3rPDobmPiYkJBiS2LNzKpoCh7dHP+7/dkVXX1C6pNAtWu6oqwpdFIbBIFoIAnM598+9f5q1cPnz+sbq9+Wp1/cf7Xd3cPX68erm7efzx/dn598/HD+6vPL/E5Pvvyu+/wtZtr/PUHaywbwxfM5OjC4esPd5/udZDbh2+3vwOf6BCr++arzbfjS/d3n27xb/fs/P3N7epPd+/v7vHpvxkT3b//Oz7/afXx49WP+lD8493d+9XH8y/+978OTfU/8A3d9/3l00+vVxiL+sn/x9ZXz/XZH67umyd/vrq/bp7hLP718eHq4ROecv7Vtz98/e03+L6Pb+7u9Tm6hB/vV6vb8y8e7j+tMPmr23/oWF5XvVp9//Pq/ueb1S/nX+xN8MXdze3D92+/vX1Y3a8+Pvzp7u7+Wnf1/ertw8u7H25+fLf+2v5P/vXh/u4fq+bDm9urh5X+1D/PvzCXxjmJQZwVMoaSS1iGfj1a8hyYk5CQ9fjy/z3/4oJ+fXb++u7h4e6nl3cv7z6UPiwftHlW8p7Jsg8cU4rGr5/1a7Mbf2536vfeigt36YMzAROxSdjZ0M1OAiXsDot3JvpwlI3IxsSTfP78fhs+3NxOeSgSJhWdBDHBWOe42wlrTSI24qO3+E/8UfZiYNTmafiqw3GxnGwK3gfa3Y+JjgXelfUmiI1COKemvyBOv8iG8f/RG2PlKJsxMGrzNA4uWQ7EERc2+e29UJB6cfPmH+9XX22ei2e8e3j48PGL588//Hh1oVB6gQ25fPP+7pM+8v7z5Zu7n57f/AS8ev7pw/u7q+vnb169vXn//tnrV/c/vv7ibfPfs6tXNpjnDV6+Uvx9df8KEPzKk3l1hwP5bnV1/ertp/fvX9Hl//nw4/n2bL7bbPmRZlM3j+agzLQ1DcofmtPkG7Q7m4/NGRwQgyrf2gOq3/Xu7pf/urr/hwq7Vlj91Pzr5eqfOmsbTT/UlqR8izm/78b44u3V+4+rRno+XN2+WbU/dfa5uZftT3bqwF9f/vD9f6qgvDuEdSqhv7u5/Udzc/77/urDBzzwSbd7+wf7K/f2/u6nKoFJUZzYEAzxlsBUqQbRL9h/s4WND3flkJO8U9wTCIcQYvcIb1QyRO8J4EAmbYHAEyDnaDuQr3QjxSMxJLy1KcqYDchX2qGgcV6FEpQ+lRXc78CvvUZ1aiem1SusCd7gzMRIwfeKhYWYJ4E2FA0L1W/YBV0SdsoGa4RTYuH+pQT8E08x3kUvIcx0ZPKlrhWevY2pPzL5SvEIO7AvmxOjyvxXn1/gzw0mnT3cnenhOHt7dXP/y9XnZ2c4ausP3rVmwebnvrt6vXrf7dQZnf/6bASU4jkZlNpHobSb3SKhtBDmqk6FSUnwR2BrjJHQa7I+wDRMsEEckZ/rWpTCXM0O5EvttGuoB/jDCu5NYuuXAKXFMFcpfK2YaJKDPUJxfSr1oAaJHKOLZLy4mc5MIc7V7MDAUtfnMnCihEfjtuIwHQTTLcxsztKzMz4Dpvqzm9vLx4FUcfDnm+vVXcPwCK6uFeuYiGwBxHZYuYuxGcLyHsK2wLwFsP3EFwmxhfhXB7FlZMHE96UU/+owtpTCOF2QLQfAOpAtI1UmPjTFCFgFs6Vczz7Kfnt79vBu9QiY8vmvf89A8zeZbjvMdNtBplslTc90v/jyhy2a2x2guV/KDDS3ZxirMD0MwdwAXK2t9iQAR7yFEEXSkdjdfNBWSXHCABtI6OgS02w0d+DGUlfYhvLZXu8LbBFOIgkmHK0zgMpAR9iMA+M21l82j7no7hhhiLBR9xI1960VYIxbziZK8BG33sbjsN35qM3TsC/GSUoB+wQ83HGCTMl2O0zQcQyevYPg9P1mBGH8JzDZcZM8H2kzslFbCxC74IWsE+cdTKSTY7vtibDd+TzmZ7sPzGkmttsek+0Golew3fipxVI0rdwkGwjonXziLbkJzdmIDarAjeJoxHvYrUlH9FDIU08DRciNgKcAi3yci6PJV7olzGOwyluaUbpwvtBWDXQuJA14SNAQUzCyAOOh0y6U11J6wnUETasFQODhDLHDLw8teoTReUGXRv0MqjlEwp75tRhVxzqRgdXiPAzfOMuhObTcXuvZ2Z8RFydbbEMF7W6NHDQfOlxSPuZez8YW5W3TNJS3zQmZJ1DelhaLp4VYV3MqYlBlinwAbgfTU6Q2Wu9g0nobAFiwY2fjvMvQroqPydfaKtnWepgaDlAOlV/cIiC1GOtqdowdNP7oE37DCgm9nHfR2oANMzGkPU18Wv9hCdJVkTHZQts99jBCyBn8hoVoD3MxHShtM95emeP0VMp7JLHNjzLbA4pp1BnyUrntUqCrAtPIyh9bNTKi9LQRzgp5R0DyYMWyn+teFANdHbudLbajLCTgqoSQghDDUF8AmpYjXRWY2ID9Ug7F2hgib3wiZMWRg2bInKzhuejtMrCrOzTZUjtqx/qYlNkJAZh5WDt98ekB2NQj1OWzM6t/t0/DUz66o9A95ijsp7dMMC0EujowLeJZJ3cUFsJc1bUopn9PGUuLca4OTMsY6cmPTRnQ1Z2aQp68ylPoij2FPOwp5LWn0G95Cr2Lv5UTc8hZSHEGZ6EeZQcw4KjvlNfe32RwDNVrG403yW+RfiN8IPmg7bNwZMTD3BEKImZbwZzQWegvRVNSlOYMEA3kOsOLAWHOxAioDBSOkvswNCieJfkMZnMTBkwQwhFvjAPRlrkBoRY0yEMFxXEcY9mgnVoviSCETBKx2Ki5nITsNXwmxIiJkOkhL4SYIAZiDAQl+xju44ExW03VaWCTJdLbk07QQcgn4iDM5zG/g/DAnGZyEPJRHYTe1zgIvV8sod3KSmZIKujJvQbYSDVOEGueItMobtIn6JjRRvKy8b85C5UL0hEKkIluLv4lX+aW8BaBCgGzSkYxUNlCu0A56JYEuejYpSWEFbaqhHo+PPRX8c75LV0CBgRZgzWOS4LB2JGcNxpWpInha7mE3cPWebVrvZvJ85EvdK3d7G1K/VHJ19lscL4rhxyCLQ4NOQSjm8YhGFKNQzCkxeJnCbhVcS7ifbQBurMFOvNak7TJw9ZIAG682uBmIyILwK3KcM6W2erR7BwsDGwLzAzcmSWwLeXwVrdhkGVKMzgRwEEfJuucC2Sjx3OZvJ3puBQCXNV9yVba7rFJVrNuYJWxOMcHMbTDog2G3qjd9dPq+gZPUSAtILHHOgXzYLXHfYLLDVUrRLq60AoLyzvocYOx019AGzWqnEMitnYrkXdqJrIQ7OoiK/aX2hETwWDLXUPUpCZE4eQBtRjsquIqvDWkfD8bTj1vG5rEeXwNWl/yYS6PRyHWVamk2Uo7/iakCCWYJYlx4TCaJoXLsIbLLrLC8sk6AUnnS7RYL2AZwNVhaAmLOnk8RRm81QanFXG7pwyhZfhWh6AlXPPUCmkRvFUBaBn/PZHjzw07/tza8cdbjj/SEJsDKYIHK+HRDF4/7DPBCLd4YzH6HpokweSglIxz1rEcx+uXD9rRphDHMHpD8ni5brvCz4ReP7qELRWEIw4fpMDaAaqBqJixkHr99UQew9c1NGhj1OVTmM3vB5TmoE5Jp+nQfcQyKecLzdE44zxvV68ZcTAGRu20eOsFSjy0NU085t3tmMzz5xNHzwJBmHxM0gfPQUDi9QUc6pgoxeOkBw6M2vFDQk4YSgo+NizbhO5puP/cibj/8nnM7/47MKeZ3H/umO4/mNkV7j/81GJJl0ZohuChMVMwwW1kJpT7BNUE2q7jUemBQXHGW5+0tsamhAng0UVnOUD9ijaFuerx5EvdSHJrNcYWs7PjXID5UlujScHPBXwcQki8iGp4rW7hvDin5X6936gWoqWwIO2dSTzK58EY3zRvo6lUuD6TVpghNUQc+blcHkML7dWdnV0ZU1tlf6Hd+j0USwpeAuzvw17ADo4GvIDS1EKSp5EvIz2BtqYYnl0ukJaiXJ0vULxmo1ITqNorb2yAI7goXjgxLNq5fIGFKFeFDNlSO+WaneDyYYMMHhEWAKSlKFcXeKPEBt6KHhlr+yJIMWo2PMFqgxVrZhO8RTBXdVqyha7ND5xO70kPTAiHyRfxO3jZsdduh9L+fT2AOYg+Wu+un94iYbQQ4upQtIwOmPhaFEJc1b0o5ShOGUYLQa4SR4tIk6lPTBnMVSZEFjI5E9W688NEtj8fqnUXTHGtO7IzENneqvcqWadBMWz6qFSjV191Bu8dheNwdPmgXXmcoGfGBB8hjmUmIpsvozXJiUApIMiFPqvRYXJeS45Hiz/lSKXd8lHxNJfPYb46dyY6lpRs43PYZNKxNFmfeGkJ9/NIpd32B+3yHJNKJmOwUxpzMVcGCwSYAeAl1oZDaytck/ksAAkvD0q1ptodqcxdPmqXck76dNwgnct2cfpT4bH9ifDY+Tzm57EPzGkmHtv/kcYyiseGzPRQA40DQsbUSwq9nACJoFV6YWaOUoIkGS2t4ACNsNi5r6usiSIQGOKhJQnTfLks+0vtJbmDHpggvYTG1WUaWGpnniWtx+GDqNEuSygk0uoWEWZDsIkpUB/8ATUAeyWqAJgY3AjfxwV2DLIJqjn2RXUHXsckeBgrycH2ciFAzs7VCShf6lrh2d6YUaZTttDGW5BvS3lKC/lpUlooD8N+QkoLLTcQuxTn6kqJBKA0ae14Qyb2XLEWVXSas9+YmXMx2YUwVxVFuL/STr22ZHzUsvEJX18GkhajXB2QRI1qZdX2fZL+lRAgDFaKghieM1uBu0Kcq2PtsqW29xK2SSDtxGDEQfj/hmeQwl6NO/IFHsGxZLY8SmYP4GiTb+MWS2cXwVxdOHbSE8bGeVgWPX9jmTQ3wliKHgcyzBaQXQZzdcV1sqV2AdnYDxtFc2p0j9wCsLQc56qwlIBUUblcnM6+i7PWtQ0cgiQXoQHEuY5MMc5VHZp8sR2lozQoaT9r0viOR+rbbeBpXd/uiVg6V307WSySFuJcnVJaxK9ODaWlOFcHpoW070ljaRnO1UFpGQ899Zkphbm6UqGl9PhEWS4y7ByUQefgTnm7pzkH3Qy+QW0oCgmpgtH5HgM0rS04C5UKstHycfxh+aAtoai9XgVqnXijBvI8rkF7GUlrbuD6iTaX7Cpx4uuwwzQtD6KCSGi7qnh9F6yhUfE0HpjEXM7BpFU2lbQR58T2sou04V3C5SSA97Gq22WDNs8yWsxS2RHtCxZcCrubMZ1vMLKWXcTUAD6+j0OECQ5BQDFqpp85UgesfNAW+ki0+iQ0CcgGt9MG8TQcg3IijsF8HvM7Bg/MaSbHoBzTMQjLssIxiJ9aLJmtApM9Ef7QXuWp79Kp0o2146taFnFckq9AxTTGa3dEY31vsQZc/ghZEVVd57moyXyhvRgXaG34w43zi2bLbBkLKJcpueS1IOx2lPHpWgydUmGCh84qjh3xllKBpfmkPZjVXzbKKRg1iNCRE2IKvq862MjTwCYQVHaZKS57cK29qrO7NWMs7f2lNnR5vjEHDIYOkTK34NnrT7dAO63TZKbxDkqVd1AW7B0swrqqhuQwJxWXLJQoNn3BePxVOEQ1Z32i7XS5iWtGFMFdXZZLttJWwQ4cVZIFKLiChy2BhSmHu6rAFIwj2hwa72BTxdX7ZJXQE8g9nq2BfSHWVd2YbKWt/9UKJD/DUNuh8zO3oOz1EWyO0seb61UPp176ukhTZL2YCk+hNYuF1FLAqzoiWuKZDGlA91alY2ui11JG3ok4aISzOX1KIa/O6ZMttiMuhHzU/ubk1Ou0jOp3RZhXl/YC8c6ajheTOiPXkt4GDTRUOiwaobmCdIowr8qsyda5zujVRBfnDeHMOjrMavu0Uyt0O32QzDRuwjx/8FE34WZ+y8TSQpyrw9ISqnVyl08hyFUhaSkDfMpAWohzVVBaRklPbdEUIl0VmhYS5RO5CMOwizCcDxTCa5qAFRbC8zO4CCMupAlRXEoGmtP6sKkGFbQCo7EiIR3JR5gN2qohZH1Iltgbk8KO+3vaOniCg6UMJ8CQYo+FkozYqHmrLvidgz2qJOD+oG1hmGwKs6UPNq0bUyCtDRx7N70nCAnTIJRG/R9lL7Ix2yiSpkGiwSYBAollz1s6nYPQKuwA7CDCZFO8USh5zSOCUuk19fY4pyIbtMW9oJtjPQnujuwGiJyGhzCciIcwn8f8HsIDc5rJQxiO6iHknHx5goeQl8u+qLzEJQ1qMoaEv+zIy4Qb6p11MraLCwAAgsDrq6S+5ghMFeti1xZ0NkY7X2kvxCPMHGUYrDGj1L98pV3FEc1UhFbstDtvXELFkVarYA12swm/8VK3tAo2pHVCmnqCozzKKhmgN2hnMuPT+sBYDZbHhqkjDpJ8Lko7X+la1dnel5GNbPZX2t4YFdoBO2M1AM7wQXuhQ6Qt4qWlY57KYZf4BQeZlzzQ4nG/YFugLy2VeylEuSogtU47eVO00Ww6fnhLaqbiWKRg/WzptIUgV0UkZCttHxG8tn6PFDQLbQmxFsUQV7VbJmEkFmy60UKumxJzRE2JOZc0b28upq4M4upKie6vtLU+ksE9FWZYZLhMh12DTZLLBpUuO/raT+MHzCH0adXv/GIBtAjdqvCziAOYOom2CNzq0jXKeIlTxs9CcKuTNkVEyeQFRIvArQo/S9mbicrexWHaOp4PZbZoicvCzJaXMgNvrXtsCJcQuhNBHq53O1I0mvpnoShYZ4+Tw5AP2vnPxfkUAY8MVc3MRFw7nG3IgGRgmEt0nX8NlmeK0Yuof02TzY6S2jIwKJ7l8xnMlthikpaVBtppcUvp0/hwMcmIVkhMGjRynL4+A6O2ns1kyAfYvVDlk6bNzZbbQtZjWlpkG9DcOzSi+nTxwtjiCh2lsc/QoJ3LLgbngIo4LEDBeHLMdTwR5jqfx/zM9YE5zcRcx6MWvaOa5i34qeUy15CYqssbaCKJeBOM3Qo3gFiy2olsXG4LQRQSFMFgzFanM0/q6gQKiCb9zsZE5ivtxbgq9EkjGqKMtBn2V9qxWtBTIhRBWCuaEy8LMBpaxUIX0+ybdBRdpwNonVsJUGqtGVGoCINZA7HB2HqvsUG9P4GCPtpoL05V2+fJhxpc61rh2d2Z+iOTr7Thx/N9OVT1jvoWLno48uyWQNNkt4QaFrub3SIhtRDtqqIHSVEbhyAl7FRfXM6Ks0kcQ79MgJa5unKUol2VbydbaqtjRwVtT04jd3FRFoGoxWhXFz5otYAYwzJRvqMPH1RiLLH2KQtWdioxTHlkCtGurovu/ko7UyRoBTGJzUfOH47F3kLMdek7mrD0XV6O+Qml75bNZRfCXBWSmsjQeg3sYVjDvTFsHY4JhLk2L4D9Eee6F6UwV1lGdH+tHV9BIs4k2Omw0l2kBWBpMc5VQWmQkEQ7xohNoW8XIyrTvMUhIhzZMNeRKcW5KoMuW2r7DAsQZ+0YwwFY/ljhu40fsCt8l0678N1igypKQa4OSMso1umLiJaBXBWSFjO/J42kZTBXp5QWUdFTOwfLUK4KSAv58YlSWtKwbzAN+gb9dtW7r77/8zd/2/IO+gPewTiDc5CBUSGx0V94dz3RpwUOtR6ox/2VbRQc1xNrb9D2WQIs0IqK+svt9FmdtCcWQa10ga3XQrnrGjXqrLfaBCWS4aghAcdJ5MgG/awdInanMGdOS0rekyVtfKJN6PpcTNbeoprRJp7jkXqlDYzamvpGW9+GaJrirGmn0sS0TbGSNqd2DMCHlOxbIQatfpWcYp9Vc+QomzEwagt/ug3QWKC9enzL6ZW+SyfiHsznMb978MCcZnIPpqMmtqRY4R7ETy2Wy1aZCXtSC2fEGN1GjplgjEbdJgnabXeUEiiUko2UgMGqU/UsDxT1YCI5fMCzRYjlK+0FuXVJi60QNSbVGC57f6UtCnLEg0nbKmml3EUktqhmAeWKcFw0Fsj0AfyqBGi/ZNV21TcwqvhdCCFqg02foEJY176TC/UwsIO2LNhHIezZXGcmX2yn8WxvzYgjM7zUpiRUvjWHkltaVFK2BSPf/Lw6u7pfXT07w/yO7xccYmEuavyCF4NuwRff/OXL717+7cSx1FstcB618jXjePTtB2CSKMgkvf9+nDld9ISpGZj9WazDYIkiaUVycXYcm1D2hFOGUa3npeHr2kdBoOBQD3EwEoAfxjoACfTjNELy1jxl2jiLwYk0MLc38XHipPQhOZ2NZ7x/+Pz7+f4o1cRQpCGs/PqH719UAOWU0TVdQNGY+KG9IX6d1p//OyygFKz+eF+zv68diPj6/u7D2c3tnq4V46O61tjoqzyg9QlhA2G5Aa2/v5YVlZZiCtFpoxrT91ASYwSfQenmRHE2R9fvrmblC+1SlIN1sGTJe2FJS0iAm0bPaiqUBUkc1GtkxfcRcXhNeCtWG/FoyT07T9LkJGrW4GJbZgAmMhs8FI8JMGp/I/5qN6L1Rmnvn1bXN3jKszPxfRu940YQDPGA7tEIggEa0C0WUwsRry58wBqTbBSyHL1ft/+12vWLWKNGRdvqzRWeWAZ5deUw91fahQ6EBDjXD4T0mi4AVisAr47t8FbjiUV99KmP9NI8Y63/jJdCLpi5ggdK4a6qIlK21E7Yu6AB6MwuRON+I7U4mJ2wq3WVm52aw4/GFhy5urB/LBarn94isbQQ6KoU1EKH9tQaaiHS1aFpqZv9lOG0EOnqMtTK/P5Tl0UqRLoqNC2NRqgKxvLFwVhkhqOxSKss5uFYWkuusFRDM9LU0Vje4Spal0xsStb0lRqitVreWaOVnfgjVWrIBm2duM4DKYM3iZoCMXNFYxmOrN1dWDOnqOtDIJe2aeOuqMj6DUfYiYExG8/k7gT2mm5OWqiBPMQjQwiQ9qjty4hLwDsCPqkVsn0HR52KgVG77AqHDYK+rzQS1Hve3Y/JYrFc0sKIATclaszipk2U1oFOkTwsYpeOshXZmK2uarRsu8U1IQ1Y3Ka0TiMOi8yJBGINTGT+SKxDk5opFKufznFKNRjOTIcnlGowvFgWRiVmCFEDPrR7d68GQrixTQnQ6ZoO0qPi0YOJAAD2MF+V8ltDDvmIT2xiSExoQ/P1Qdtfai/HrSUTOWpT8XGN8/KltltgE9mmThg+CsugtxvNoilX51g7GnXyvtUCRLNUIps0JoHyQgv5Wm5CkJQ83nBjAUPHBNUZclTcTLnoAytd6ztb2zLqvOTrbJjzfFcO1WloESlrQ6rZxTJNhYa66ILh8IJFIGkpytWVaAjstIaMJS9s1zyPg7oZbVBqNOBo0Fz2dCHKVXm9sqV22rVeSGx+0M5rIS0irrUY5qo4GBbH6oNThsOZuCE5iEUL/cJY9XP5lQtxrq4D695CO9uPvQTYQN6mADn/Gw5CSvsFGuKEpYalJtIiritILBJIC0GuDkc9Wa+Vhh077jPVYLtbCcwJj4guzVMIqhzjqq5FttQ1SxHxzKCF4bUv2jIqtpdhXJ3YSaKyDTvlohby7WkTL8rsCBRBDmEuHC0EuSoTJlvpms1hgnyHNuzJHw5Va4sz9MDUFGeYpC5D3jXo0boMZtm+wDJsq4TPIkJ16ttQiG2V+FlI854ygJbCWyWEFhDPU5suRehWh59FZPhENRlUuRh0A9KgG1A3ptQNOIMX0KUI/QmXUuMO/eY4J6tNoESd9dqKeOt9jinKkA3aPssbwpuOwCEHNW7bJp/UDaj16gm3WmvXe2LfxZTDKIeFjikaWOrBpWMUIhgctaHG8knMWJcBV5pS9EZroKzfFtlIDJWaBW9Sm3Qf5WgMjLoOGAHeRqO5ueIpztZvlJhwR7RMM95Mz9dYiM2gRYWst8EZc5x7MjBqFwkhEXdEKyJzkLR9Nk7EH0in4g/MJ3IC/sADk5rLH0hH9Qfamqaj+KnFstiN7KRASkBYH3hXdgIxNfoUYm1cE0kFQANojN6x74uAWW3mo51OTYpmrvzQoZVuBLoW1YJUD25sE8n9lba6sEqnBClJzosLi6gz3GoY4pg1ZM64zhLqdAFKHuAO4PduhMV5AbmNN4Fdc07tE+psuoZBNxjfOO9Ie07N4/oYXGyv+GztzUif6P5SG7J8b2cOJxR3sDTkFPQ8jVPQ5aVunuAUdMstdVOIdHWB2azQpJGsHLea0wHBE6k2DhRLdq7gikKkq0sd3F9pp2SLCjN2Jooq2ksA03Kcq2JinLpXtOercUZ6G0jrCoqG+VOilgOaJ2+wEOfqorL3l9qyMV79K6pgJp/4cPfRDpG2fII2lvRwHl25IddKH/cK2rbN9FJp7UKYq0xxEWHrfXR4Us9QwopX4jgmabol+7mgtBDnqqA0X+qasGCW4Bx5p5WmFpIwWIZzdRku3mqN6igp+tBzGtZpjxLgiCXGp7MF5BTBXF2Z//2FdpyOC1qemthoRdZ0EEkbt+AGmS6fTVWuvdYtuNhy7aXgVgmgReTq1ABaim6VEFrI+Z4yhBbiWx2ElpHQUxswZQhXBaKlzPhUzkF7wDlo185B3nIOYgEHnYN8yDnopvcOWu0dTskxa0bmOt2BteiqBAu7wwXaClEdkyCYDdpGd2qT7mi8iASoJjN5BklLwQL0bIKGFLUl1np6hnEgAeKJyEd/nK3IB/2srbj2prAdMDKxXzCEGCG2HM6FtpXuSxxhXqHRlyDZkj1OL+d80BbxLJGWV8LJYPKeZ8sQtIJXRCkBlrSM/jqCKGByOMqYdoAIPU6KYDZmq6AGdrCxjRFL0fP2DTkRl6A9FZdgPpETcAkemNRcLkF7TJcgSZ7Y8rhLsCuAvEjLoRGYBpLMBe2w2RMPjXizBPmWIpT+cSQ2sfNOgcAEwu9eA4oUNNLOKTzTXFWG85VuBHkCQnqrLVnH5bVkK22thijeeZucFrPH7yWUFmlVC7xLzYPSyORemqoWoH28YIJa6D7jaosw9t0Ia7RRCH2QZ3CaydkcU/Fxtm61+UrX+s7WvoyytfOFrmO+oVZgbzQEzprfqNW+VZN9TWI3PIx5GgEztlL7AIf9uCuQF87BlKFcXUNajMwMuxQWRur7XuCJnhwZr/X9ieaq0lSKclXAkC21064xtGgMIgAcF3Ah/EsZylVJHmswtFYc1MYjfe0wGGsGZkgwMAH8XORLKchV3Zi9hXYWSMLIGtuvbWrcIwT2BpYun53RExns0U7AR32AGYPddJYOS0XPQmirQ88iFmDi21CKbHVZGoXcxCmjZxG01WFnEVUyNXqWIFsddBaxN1W0NZfT1nyAtuY1be23aGuvwUebTqPf/vD1t9+cPyGtJUzPXBunuUghBaCTCcn2SWfJNE2botNKNuE41e2yMbsg2KbCg4E8Zi1BOw937YBHRoBSlpPx6wRE7eEFiDTQFyLr4Y7H4CgHR8XTfD6H2erbmRA4ktjAQCLptepAGnVHTStkS8cpb5cP2qY96mmkyMFqUWtmOxN3DcUQ55KY8Rug3CcZEmmeHWHColfnSJ1G81Hbp0nCP2NT1EJN/dOjr/lU6Ot8IidAXx+Y1Fz0NR83oyUvjv2UjJbl9m5RqRnVix+iNr707DdSMxlgd1DnLI0sG6/4C9EswUE+97Do2XpIbECjWi1utoyWbKW9MKfgA5R7bZU6sszQ/ko7Sx1CAfoCPsUp361YdqJmQ6tdBJGgkS9Rulzti4aNaAKILOn/RuRy0KXz1mProSFrAji5XozC7gw+arYIZMpMoaYDS10rPLvbUn9cBhbaEuTZvhxMZrGDnUatC9OkssSq+nZxuW7AQoir8gKq5mS1Y7Nom+LY61MuUozEJkZn7VzmdCHEVeUlZCvtgtxZS5kECK+mrbVdAoyWg1wdkIgnVb7ZNQlWa9kWvbEClVz5GRvDbA1bCnGu6tZkS+3UG3ZRjXTRFMRwOHqwA6VNXuD93acf3z07e2rP5hIiewBJw+NEdg6kYbBl8yJwtBDk6vpekQ0AimjUoUY9jHhDPorRCkUx8FzlmUpBrioKO1tqBz2aRYYrl9QDC3tgAUBajnFVKfl4ETZI05lPbC/cKAi+rA0t8BgxcbYInDKMqzoy+VK7dKFggnKgLjEDsg/iaItJ2/EUjb+Np0loCRmKPprQspnfIoG0EOXqgLSIWZ06n6UQ5OpuRSHfe8pAWgpyVUBayEBPfWYKUa6u20EhLz5VPos74Bh050PF7iL/lmPwUErLSzuDY1CzhwCG2vjKu42fOzlHuKbBMV7CcdyC2ZhdcaDotPq9dr1yfqeK46RuwWjZ4/QBm6Baczu7C39pnCbeBUzYAMiP4QgbGrThyLIZzFfozkfILNL6G9b2sYZWk5FwSJSzgAUqx6j7Nzhql/ToSJvcGsMaBbuf4DNhSovVik6kDm3SiIVufoAi/FObqmJ+Ph6jG9rQoF1YRAia+MmQ2rgq23fkRLyC7lS8gvlETsAreGBSc3kF3VG9gpz3GXiCV5BlsSyMikxgt4OSDFjaJLWofGuK7hut6zymYpcCgdd6JVCsJDJJXyZbaWKrGrU6UtJcJnW+0l6UW2s8rKpA7EbpwvlKWz1QjXZnoIvrrmz3fz1d46FVLnBi2JNuDzu/pV0ox5tYq2jLCA7ignAsU6Mya8KVkLW965GdqKVl2EOE+HlcIENrXSs9ezszosxdvtSGMc935pBnkGXQMwh7bBrPIPsazyD7xWJpIc7VVRbRshmM4RiD8RqsKEHZNg37A4PbzJYgWAp0VUxMvtZOx9ZqK7DIoiRDULOXgKblSFeXVCkEZBKi1j7te2EkTeXESyEYsybOkw1VDnWV/dL2ltoaI8RRYBPF2FIHh52DLS5ts9pcwGqPTXLJ64U+muSymd8iwbQU6erQtIwbmJqjLEW6qqI7xZTF6cJpOdLVafNlJMrUMrgM6eoMujJmZ6qEF3+A1/bnQwkvqp8fqNPkD5DaTerM5KS219jUlFxgsr5PL4ohWahZHqqVdccK5c8H7Yxhp5HDxnirDaN4Hl5btASHExcafx53xcX5MjjRrkEJxx3nzxyDvRwaFM8K+Qxm47UB2UH7y0I1gm7d+/DEWyPOMOF/WnThONku+ajt05yP1uPAaAErn2SuUk0M+Sjql8WptX5T4BOTThZilFSIbReLHrEX+aAd+sOysQkyGbd1t2fmidDa/lRo7XwiJ0BrH5jUXLS2PyqtbbiG1m6bpy/SemiEpirP5BiqrbXbQlNULRKtEz1Kc8b4MEyjJg9T4LSme0QzxD0QAMYFFK7ZIsWylW4kucRkosaQjTOf8pV2geBaDYo81MBoxSwhJKZTLXyIHFhlWtqoFrZlJXQTRzG6VlsfYhiB5YYRuQtftHglHGBOMJ5NKj1mOTBDS+0Vnp19qd2AoYU2e5xvyyFG2/BggDYO9DSM9kDJuycw2gsueVcIcVW1E5Tx82yS2Jg2wXtsNPYZH8XQ6N9zpQwWYlxVmFi+1JaGwl2BsaHde8loHM0SgLQY5ap8Y1q3X7QktNpi64rCdGkZ8h76fxCGHu7n4e2Kca58B4ZW2mzA7r78Bpst6UALrPDEtMGRyS4xz75+PNklLjf5uhTlqthspT7xiyJwyVBfcF+MkhjQgZMz+DzOhKTFMFfXAytbbLsJSn7iV4R2I5rSuwQsLca5KukT8R9brcLOPsW+tJ5X9t+pE4aNdTNF55QCXV3fhf2F9joOSdDy+Nq/4nD1pmj3HIPk1PFmp0l3yePV9tNdBjTS0PSZMYt1DRYCXV0yKQzlBN2XXFTdt38GHoKzl8iEqBWh5nINluJcHZhmi+1Y3+C1dimwXKcgy3ANlgJdXcZH8knZFYKpHE2f9eIt/lPnTUgMc2G2zP0yqKtC02yl7SOiUe+BZlAF6AGHNdOmjugWQF0+OyuJs3BHLybqH4uzWHiYRSHO1WFpmatqciwthLk6LC31oJ00lhbiXBWWlvn0pobSMpyrg9IyR2NVlIUvj7KQA1EWso6y2OmGFQ5HWZxS6iBRiBoD5qFMGTa8VqhiEG1KpvqW4LAfp/FRPmj7rKi9NQKOu9gkOy7kSRtiaQC7IZw9rTnek74eyKXxEBpxloI5Tt+jfNCGLMxmMFeURWCxQe8gbE3DoW/b7XFOvIPkDHaX/h1TRjMbtOVHYPnaAFwRlQ92rtRBHxlCXMsHap6M7ZvIKpcTXGi6yCVnjnNBBkZtaXft/eu1Uh+kjw1pm+E9kSgLOZUoi3wiJxBlcWBSc0VZyFE7Yg1UcHpCR6wFl3DSXhxR3WMO0Ag1bROaKBGmJsSYZsiPa1EfgAXa7QACU8GxD+i1JgEIyLsQbRQzV4x2vtS1KFeq23kvqiOO2oGBpXaCAfJRxEENFX3QItIHG+2CBWthbf20KeKkmgBrKTgD1dqPy7f0GroOYzNYWHSpL7jnmuhkbBY0DS9uLu4uX+la59nblxFHJltpuwGa7gBDE5LTwqQ9bDpQXsOJ+9Yuv39PrDzb5fEwC2uX3dSlEObqoFSgVhttLSXepF6Fg1qp1eY0tpzDbP7BYpirIhWyta517BhS0mZkrCWiF4CkxShXBaRRUzwsaxA8QKM3fzA+E0WKWvaF01zMXSHM1TH62VI7SyRGGGaCR8FANL9RDq9htDfopJ2x/DRJg3lnwad1xlosmV0IcJUYWkIITB1jUQZvdQhaxlKcNIIWwlsdhJbxJlOfmFJ8q4twLKVzpsoYDAe47HA+UAmPaadF1vd//uZv50/IGZTp2WwTSAJhRwFR2Ps+/SFBu4pabTjByAjhOMlh+aDrAjqsJWo15k0jIudhs+2lVmCMRpOcBceta02nXydx5HE9HTkOx0gaHBq0ifzMpzAbn63VOYzR1Ggt1L+mK2w04tgB0LWvBR/nXOSDts+iEF1KmoOsPRT8XDmDmBqAxwtkAGnRz614xCQJbytBgIbAxyH3B0ZtaQ/xEA0OMKyUUbKnR2iHUyG084mcAKF9YFJzEdrhmIS2TTVpg/ipxRLaKjeTg4qsfZY14WlLbkrUBhYmjOwUGlh7p0BRtxq5usYcAAIbdfaTSWm2tuR7y+zFuPGwpgBSTvyoCPV8mZ30gSEB/U80lNHbJYTAtHqFidEr98CWuiogrQrAVmzUIJ8oo4LpbPTROW6iAnyKbl0bCvq6bhS+5iBXwkz8y9Ba1+rO3s6MSPUZWOvn9iapoiVN1Ibbrni2bzp0eKR0yy8Y+f7ZWUhNeCFNQ2Zf5F7Bx9nsi0Gn4Itv/vLldy//duIgGqDlesPaO5y1htP6lierGTDR4EhHaH/jvIKFz5gYSAfm0c2PoftqOTMWb8b1yCp9xgmjKSbNotp4CkofEXNfBo+YmnpGXrm9MNIvWP6UqSvhDUykRTtRDAxQ/nhk3YKKh+SUNp7x/uHz78dc51ktj0PmYA3mr3/4/kUFXE74zluheTGqjebeEL9O69H/HRZQClV/vK/Z39cOQHx9f/cB2tWZLmtdpSE1aXHmUaVrXGIx1yQW84ITi6dQtqILojntxFGLpW8UDR9I4//xID+bz2saXWt/qR2VCWsVW+Nh+8BG5iVYrlPpWs6KE81TCKxB9VunxuN92GSSi9EZOw/XMYmqNbjYlvWFScua3ALjGRt1uCdpCju5xF0w1lZ63O+fYZxzgI9nGMdlJxgXAl4dppKRyOof0VSQHrej0RLqwsZ6mi+9uBTv6sit/aV2z4iJSbz4YLWI7zIwtRjtqiCVtaKbvg+j3qT+GY5wXpNxLmlaL80VwFcKdlWHJl9r50YL2pfdpdCkyx0OJGiiseJ2evFTo7HGphbn0ViPphYvPBqrDOLqULTInT31hShEuEoULXOynzSKFgJcHYgWuv2nPjSFCFeHooXBCFOlFscD4ViaEJA3JmV3MLVYO5kOBWNpAcepY7G0G2jAu2TjSLRgYC8XAz5xTSVxIOVx8mn3x2x9uNoR1QosvuQjy7ZXZMJQLNYkB0vJBcwMGNglOWiZKzY+mRihXkZuItnHx2INjYqnuf1JzBeLFZv2NurEtAGCshcPWm4TRgfm6a3l4+RZ54O21ScskCSpjxmGsLa/my0WS5trQz/EG9NgwXWpA0Na5QsnF+IzynG2Ih+0wz6XDEF914JKZmcnTiQQK55KIFY+kRMIxDowqbkCseJx25LmrPZT2pIul9ZuhKaHeuKcNiDqUzlUvjGQjAFbwPdxXWxUBFnvOBrvk/SR705EQ7S8I2jtabYs0WylG1EO4xrGjnatGhVelK+0S38wXm0GgZTUYkULMB1a3YKiaLVqgrUVtnUL8UrkMeRKGpPH0AzmiTTFRas2bTo/QZDjFAV86IKEmXLRB9e61ni2t2aUwZ2t9HNTjnN3X9xBw6HDJGVbGt9gX3eYDE1Swz3VRGOl5ZZoKAS5yvJuWrDIRENJbG+w2iDkIo6EsDGe5sLRQpCrC2vdX+m6tJsWk0qkNHqIi+iDUQxxVelglimpEm5VvvXavotaADrCCBAhmGjzNQQvwri6hqzZUluDJ0g0UVjwdL/XwnbXL9ij5dv7m9sfV8/OOD4tvOIo8VmUOwUfj7Kg5eYFFEJcFYpGo03+vCVHOH8bKttKtDH5YPGL3GwRrWUYV0dlZ0ttn0FJWw+6EH1kNdMXAKTlIFenwBPMUG3q6aVNum6NpMYRlzwxtjKmuUpkloJcVXZ1ttR2B3wMSbuRkuM2S/+QPpr6ugy7xW4mCa3IddH90Iphl2CTurBMIC1EuSokLeNVJ3cKFqJcHZQW0r2njKSFKFfnFCzin6emgspArooLKyTFqxyCTh2Cf29g8eF/3Vyv7rL5tV99dn5zjX9AdGpdPcdE1FQEvnl4r9/0n6vVj1e3Z1/dX12/X30++39nSsWe/fd/nb14d7e6vfnn2fcYD1/+4e7T7fWZw9/o40MzNfy1U38x2jtA7u3VzfstWniADf7w41VDFH+4v7vuqOG3q4c3756/e/U//vVupRfg12e/4O+/3Fw/vPv1mRLGD8/XA755e9H8zMfLTx8vVlcfHy7oUke6fH33/uH69uPl7erh+c/0XL2YN2+ei5bhV1zUggHPNUTg9Wt6ffEWmHnhOL25uDLOXWBTrlc+XL9xNj2n69eJ+SpcvBa7unDxtb24krS6eBOu+bUk//at8xjJ/DOZ5z9d6cSbCXXs9Ie7jw+Nh3XJO+CiuzLx+sKu3sYLd8Wri/TG8IW8jVfmTbwWdu45wNX8k6C/D23Cp9fXuAta2VpLZRgv3hjTuJbvHz5++ZB98OZ+he+/zr+Or/54d6/3ARv3YYUDe3Oncnr9wdetb/sv7WH/0873vL2HhH9383G1+9P/pj9w8frzhf7/9rftjqV37eyrz2cv2u/SF/anu+vmkz9/+fL7/6m+8etP91fNw77QitP6w6v75sK13onmzjFDMOtjbu4/PnRjt/dNQf+q/1p3+Vod577/znO93p9X6qk/11vZTUVv9+3Dt/oA07Sivder2bv33V4YQKsX4aL2X1B7dQMbA96UP4DjD+D4Azj+AI4B4Pj7r/8fN2LZVzH7AQA='
binary_string = base64.b64decode(payload)
decomp_data = gzip.decompress(binary_string).decode()
data = json.loads(decomp_data)
print(data)
Related
I use the requests module in Python to fetch a result of a web page. However, I found that if the URL includes a character à in its URL, it issues the UnicodeDecodeError:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe0 in position 27: invalid continuation byte
Strangely, this only happens if I also add a space in the URL. So for example, the following does not issue an error.
requests.get("http://myurl.com/àieou")
However, the following does:
requests.get("http://myurl.com/àienah aie")
Why does it happen and how can I make the request correctly?
using the lib urllib to auto-encode characters.
import urllib
requests.get("http://myurl.com/"+urllib.quote_plus("àieou"))
Use quote_plus().
from urllib.parse import quote_plus
requests.get("http://myurl.com/" + quote_plus("àienah aie"))
You can try to url encode your value:
requests.get("http://myurl.com/%C3%A0ieou")
The value for à is %C3%A0 once encoded.
I'm working on a new project but I can't fix the error in the title.
Here's the code:
#!/usr/bin/env python3.5.2
import urllib.request , urllib.parse
def start(url):
source_code = urllib.request.urlopen(url).read()
info = urllib.parse.parse_qs(source_code)
print(info)
start('https://www.youtube.com/watch?v=YfRLJQlpMNw')
The error occurred because of .encode which works on a unicode object. So we need to convert the byte string to unicode string using
.decode('unicode_escape')
So the code will be:
#!/usr/bin/env python3.5.2
import urllib.request , urllib.parse
def start(url):
source_code = urllib.request.urlopen(url).read()
info = urllib.parse.parse_qs(source_code.decode('unicode_escape'))
print(info)
start('https://www.youtube.com/watch?v=YfRLJQlpMNw')
Try this
source_code = urllib.request.urlopen(url).read().decode('utf-8')
The error message is self explainatory: there is a byte 0xf0 in an input string that is expected to be an ascii string.
You should have given the exact error message and on what line it happened, but I can guess that is happened on info = urllib.parse.parse_qs(source_code), because parse_qs expects either a unicode string or an ascii byte string.
The first question is why you call parse_qs on data coming from youtube, because the doc for the Python Standart Library says:
Parse a query string given as a string argument (data of type application/x-www-form-urlencoded). Data are returned as a dictionary. The dictionary keys are the unique query variable names and the values are lists of values for each name.
So you are going to parse this on = and & character to interpret it as a query string in the form key1=value11&key2=value2&key1=value12 to give { 'key1': [ 'value11', 'value12'], 'key2': ['value2']}.
If you know why you want that, you should first decode the byte string into a unicode string, using the proper encoding, or if unsure Latin1 which is able to accept any byte:
def start(url):
source_code = urllib.request.urlopen(url).read().decode('latin1')
info = urllib.parse.parse_qs(source_code)
print(info)
This code is rather weird indeed. You are using query parser to parse contents of a web page.
So instead of using parse_qs you should be using something like this.
This question already has answers here:
UnicodeEncodeError: 'charmap' codec can't encode characters
(11 answers)
Closed 5 months ago.
I am trying to make a crawler in python by following an udacity course. I have this method get_page() which returns the content of the page.
def get_page(url):
'''
Open the given url and return the content of the page.
'''
data = urlopen(url)
html = data.read()
return html.decode('utf8')
the original method was just returning data.read(), but that way I could not do operations like str.find(). After a quick search I found out I need to decode the data. But now I get this error
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position
1: invalid start byte
I have found similar questions in SO but none of them were specifically for this. Please help.
You are trying to decode an invalid string.
The start byte of any valid UTF-8 string must be in the range of 0x00 to 0x7F.
So 0x8B is definitely invalid.
From RFC3629 Section 3:
In UTF-8, characters from the U+0000..U+10FFFF range (the UTF-16 accessible range) are encoded using sequences of 1 to 4 octets. The only octet of a "sequence" of one has the higher-order bit set to 0, the remaining 7 bits being used to encode the character number.
You should post the string you are trying to decode.
Maybe the page is encoded with other character encoding but 'utf-8'. So the start byte is invalid.
You could do this.
def get_page(self, url):
if url is None:
return None
response=urllib.request.urlopen(url)
if response.getcode()!=200:
print("Http code:",response.getcode())
return None
else:
try:
return response.read().decode('utf-8')
except:
return response.read()
Web servers often serve HTML pages with a Content-Type header that includes the encoding used to encoding the page. The header might look this:
Content-Type: text/html; charset=UTF-8
We can inspect the content of this header to find the encoding to use to decode the page:
from urllib.request import urlopen
def get_page(url):
""" Open the given url and return the content of the page."""
data = urlopen(url)
content_type = data.headers.get('content-type', '')
print(f'{content_type=}')
encoding = 'latin-1'
if 'charset' in content_type:
_, _, encoding = content_type.rpartition('=')
print(f'{encoding=}')
html = data.read()
return html.decode(encoding)
Using requests is similar:
response = requests.get(url)
content_type = reponse.headers.get('content-type', '')
Latin-1 (or ISO-8859-1) is a safe default: it will always decode any bytes (though the result may not be useful).
If the server doesn't serve a content-type header you can try looking for a <meta> tag that specifies the encoding in the HTML. Or pass the response bytes to Beautiful Soup and let it try to guess the encoding.
I'm using python 2.7 and I have some problems converting chars like "ä" to "ae".
I'm retrieving the content of a webpage using:
req = urllib2.Request(url + str(questionID))
response = urllib2.urlopen(req)
data = response.read()
After that I'm doing some extraction stuff and there is my problem.
extractedStr = pageContent[start:end] // this string contains the "ä" !
extractedStr = extractedStr.decode("utf8") // here I get the error, tried it with encode aswell
extractedStr = extractedStr.replace(u"ä", "ae")
--> 'utf8' codec can't decode byte 0xe4 in position 13: invalid continuation byte
But: my simple trial is working fine...:
someStr = "geräusch"
someStr = someStr.decode("utf8")
someStr = someStr.replace(u"ä", "ae")
I've got the feeling, it has something to do with WHEN I try to use the .decode() function... I tried it at several positions, no success :(
Use .decode("latin-1") instead. That is what you are trying to decode.
I am trying to count the number of Unicode characters in the JSON data. I am using requests to get the data from the feed.
import requests
r = requests.get('https://venmo.com/api/v5/public?since=1438578858&until=1438578958')'
j_data = r.text
Now, I need to convert the j_data into a dictionary to get the message items alone. If I just use json.loads(j_data), I get UnicodeEncodeError: 'charmap' codec can't encode character.
Therefore, I am encoding the j_data and then trying to convert to dict using loads. I am getting this error
TypeError: the JSON object must be str, not 'bytes'
How to approach this problem?
Code:
import requests
import json
r = requests.get('https://venmo.com/api/v5/public?since=1438578858&until=1438578958')
j_data = r.text
encoded = j_data.encode()
b = json.loads(encoded)
print(b)
It seems to work fine in Python 2.7.6
import requests
import json
req = requests.get('https://venmo.com/api/v5/public?since=1438578858&until=1438578958')
contentJ = json.loads(req.content)
and I get a dict named contentJ
As I see it, you try to encode something, that does not need to be encoded. Stripping of the line with the encoding and all works fine in Python3.4.
import requests
import json
r = requests.get('https://venmo.com/api/v5/public?since=1438578858&until=1438578958')
j_data = r.text
b = json.loads(j_data)
print(type(b))
To get json, use r.json():
import requests # $ pip install requests
r = requests.get(url)
data = r.json()
Your error: UnicodeEncodeError: 'charmap' codec can't encode character. is unrelated to the json parsing. Most likely it happens when you are trying to print Unicode to Windows console. Configure the console font that can display the desired characters and install win-unicode-console package:
T:\> py -mpip install win-unicode-console
T:\> py -mrun your_script_that_prints_unicode.py
See What's the deal with Python 3.4, Unicode, different languages and Windows?