• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            清風竹林

            ぷ雪飄絳梅映殘紅
               ぷ花舞霜飛映蒼松
                 ----- Do more,suffer less

            Python Challenge lv4: follow the chain

              題目鏈接: http://www.pythonchallenge.com/pc/def/linkedlist.php
               
              說實話,好不容易通過google搞清楚題目的要求: 通過不斷的從服務器取得一個web page,然后從源碼中找出下一個鏈接的地址。需要注意的是:雖然頁面的源碼很簡單,但并不是其中所有的數字都是有效的,需要使用正則表達式找出正確的pattern形式才可以,對本題而言r'nothing is (\d+)'是一個可用的pattern,使用''.join([x for x in text if x.isdigit()] 將所有的數字都粘連起來了,結果跟蹤到4000多還沒結束,才知道上當了。。。
             
            import re
            import urllib.request


            if __name__ == '__main__':
                url 
            = 'http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing='
                index 
            = '17675'
                counter 
            = 1
                pattern 
            = re.compile(r'nothing is (\d+)')
                
            while True:
                    
            try:
                        request
            = urllib.request.Request(url+index)
                        
            # my pc must use proxy to connect
                        request.set_proxy('172.16.0.252:80''http')
                        response
            = urllib.request.urlopen(request) 
                        content
            =str(response.read().decode())
                        response.close()    
                        
            print(counter, content)
                        
                        result 
            = pattern.search(content)
                        
            if not result:
                            
            break
                        
                        index 
            = result.group(1)
                        counter 
            += 1        
                    
            except Exception as ex:
                        
            print(ex)
                        
            break
              程序輸出:
            1 and the next nothing is 8511
            2 and the next nothing is 89456
            3 and the next nothing is 43502
            4 and the next nothing is 45605
            5 and the next nothing is 12970
            6 and the next nothing is 91060
            7 and the next nothing is 27719
            8 and the next nothing is 65667
            9 peak.html

            得到下一個題目的地址peak.html (注:我的index初始值是17675,題目中最早給出的可不是這個值, 我是從地址列表的后一部分選了一個數字而已,因此不要擔心)

            posted on 2009-05-11 16:05 李現民 閱讀(570) 評論(2)  編輯 收藏 引用 所屬分類: python

            評論

            # re: Python Challenge lv4: follow the chain[未登錄] 2011-05-31 20:17 simon

            有個問題想問:
            你是如何知道要用nothing去做pattern的呢?  回復  更多評論   

            # re: Python Challenge lv4: follow the chain 2011-06-01 10:04 李現民

            @simon
            你去看一個網頁的源代碼,里面有一個鏈接, 你點一下會出現 and the next nothing is 92512, 替換Url里linkedlist.php?nothing=12345中的12345,然后再回車, 你就會發現規律了  回復  更多評論   

            97久久婷婷五月综合色d啪蜜芽| 久久国产精品免费一区| 伊人久久大香线蕉综合热线| 久久WWW免费人成—看片| 亚洲AⅤ优女AV综合久久久| 狠狠色丁香久久婷婷综合图片| 亚洲αv久久久噜噜噜噜噜| 99久久亚洲综合精品网站| 久久精品国产一区二区三区| 国内精品久久久久久久久电影网 | 久久久久亚洲AV无码专区体验| 人妻精品久久久久中文字幕69| 亚洲午夜久久影院| 精品久久亚洲中文无码| 久久se精品一区精品二区国产| 亚洲国产美女精品久久久久∴ | 久久大香香蕉国产| 久久亚洲国产成人影院网站| 久久免费的精品国产V∧| 久久伊人五月天论坛| 色综合久久最新中文字幕| 狼狼综合久久久久综合网| 亚洲国产日韩综合久久精品| 免费观看久久精彩视频| 久久久久久夜精品精品免费啦| 伊人伊成久久人综合网777| 97精品伊人久久久大香线蕉| 国内精品久久久久影院免费| 无码人妻少妇久久中文字幕蜜桃 | 精品国际久久久久999波多野| 亚洲欧美成人久久综合中文网| 久久99精品久久久久久9蜜桃| 91久久精品国产91性色也| 亚洲国产成人久久精品影视 | 久久国产精品99国产精| 7777久久久国产精品消防器材| 一本综合久久国产二区| 婷婷久久综合九色综合绿巨人| 久久久久久国产精品美女| 久久九九久精品国产免费直播| 久久嫩草影院免费看夜色|