Python Challenge 第5关_反序列化

pronounce it

第5关:打开源码发现:

<peakhell src="banner.p">
<!-- peak hell sounds familiar ? -->
</peakhell>

去查看​​banner.p​​​,好吧,看不懂。然后翻阅之后知道了有个​​pickle​​的序列化和反序列化模块。

  1. 获取源码。其实页面源码就是完整的数据了,可以直接下载下来。所谓的查看源码之后,反而因为浏览器的自作聪明,给打上了各种标签,造成了困惑。

import urllib.request

def get_html_page(url):
page = None
resp = urllib.request.urlopen(url)
if (resp.status == 200):
page = resp.read()
return page

  1. 主函数。获取数据内容之后,直接使用​​loads()​​函数反序列化,得到了结果。直接打印,发现是一些列表、元组组合。每行都是95个字符,遂打印之。【当然这不是我的功劳】

def main():
baseurl = 'http://www.pythonchallenge.com/pc/def/banner.p'
page = get_html_page(baseurl)
rs = pickle.loads(page)
for r in rs:
# print(r)
for c, cnt in r:
print(cnt * c, end='')
print()
#####                                                                      #####
#### ####
#### ####
#### ####
#### ####
#### ####
#### ####
#### ####
### #### ### ### ##### ### ##### ### ### ####
### ## #### ####### ## ### #### ####### #### ####### ### ### ####
### ### ##### #### ### #### ##### #### ##### #### ### ### ####
### #### #### ### ### #### #### #### #### ### #### ####
### #### #### ### #### #### #### #### ### ### ####
#### #### #### ## ### #### #### #### #### #### ### ####
#### #### #### ########## #### #### #### #### ############## ####
#### #### #### ### #### #### #### #### #### #### ####
#### #### #### #### ### #### #### #### #### #### ####
### #### #### #### ### #### #### #### #### ### ####
### ## #### #### ### #### #### #### #### #### ### ## ####
### ## #### #### ########### #### #### #### #### ### ## ####
### ###### ##### ## #### ###### ########### ##### ### ######

下一关URL:​​http://www.pythonchallenge.com/pc/def/channel.html​