Python Challenge 第5关
原创
©著作权归作者所有:来自51CTO博客作者BasilGuo的原创作品,请联系作者获取转载授权,否则将追究法律责任
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()
##### #####
#### ####
#### ####
#### ####
#### ####
#### ####
#### ####
#### ####
### #### ### ### ##### ### ##### ### ### ####
### ## #### ####### ## ### #### ####### #### ####### ### ### ####
### ### ##### #### ### #### ##### #### ##### #### ### ### ####
### #### #### ### ### #### #### #### #### ### #### ####
### #### #### ### #### #### #### #### ### ### ####
#### #### #### ## ### #### #### #### #### #### ### ####
#### #### #### ########## #### #### #### #### ############## ####
#### #### #### ### #### #### #### #### #### #### ####
#### #### #### #### ### #### #### #### #### #### ####
### #### #### #### ### #### #### #### #### ### ####
### ## #### #### ### #### #### #### #### #### ### ## ####
### ## #### #### ########### #### #### #### #### ### ## ####
### ###### ##### ## #### ###### ########### ##### ### ######
下一关URL:http://www.pythonchallenge.com/pc/def/channel.html