pronounce it
第5关:打开源码发现:
<peakhell src="banner.p">
<!-- peak hell sounds familiar ? -->
</peakhell>
去查看banner.p,好吧,看不懂。然后翻阅之后知道了有个pickle的序列化和反序列化模块。
-
获取源码。其实页面源码就是完整的数据了,可以直接下载下来。所谓的查看源码之后,反而因为浏览器的自作聪明,给打上了各种标签,造成了困惑。
import urllib.request def get_html_page(url): page = None resp = urllib.request.urlopen(url) if (resp.status == 200): page = resp.read() return page -
主函数。获取数据内容之后,直接使用
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()
##### #####
#### ####
#### ####
#### ####
#### ####
#### ####
#### ####
#### ####
### #### ### ### ##### ### ##### ### ### ####
### ## #### ####### ## ### #### ####### #### ####### ### ### ####
### ### ##### #### ### #### ##### #### ##### #### ### ### ####
### #### #### ### ### #### #### #### #### ### #### ####
### #### #### ### #### #### #### #### ### ### ####
#### #### #### ## ### #### #### #### #### #### ### ####
#### #### #### ########## #### #### #### #### ############## ####
#### #### #### ### #### #### #### #### #### #### ####
#### #### #### #### ### #### #### #### #### #### ####
### #### #### #### ### #### #### #### #### ### ####
### ## #### #### ### #### #### #### #### #### ### ## ####
### ## #### #### ########### #### #### #### #### ### ## ####
### ###### ##### ## #### ###### ########### ##### ### ######