Python Challenge 第5关

59 阅读1分钟

www.pythonchallenge.com/pc/def/peak…

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
    
  2. 主函数。获取数据内容之后,直接使用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:www.pythonchallenge.com/pc/def/chan…