使用python 3.x 對pythonchallenge-----4的解答過程
阿新 • • 發佈:2017-09-02
there win data connect cnblogs http .html style 通過
pythonchallenge-4地址 : http://www.pythonchallenge.com/pc/def/linkedlist.php
圖片如下:
題目解析:通過頁面源代碼解析,要打開鏈接http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=12345,然後獲取nothing值,一直循環直到得出答案
解題過程:
from urllib import request,parse import re url = r‘http://www.pythonchallenge.com/pc/def/linkedlist.php?‘ headers = { ‘User-Agent‘: r‘Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) ‘ r‘Chrome/45.0.2454.85 Safari/537.36 115Browser/6.0.3‘, ‘Connection‘: ‘keep-alive‘ } data = {} data[‘nothing‘] = "12345" def getnothing(url,data,headers): data = parse.urlencode(data) url = url + data req = request.Request(url,headers=headers) page = request.urlopen(req).read().decode(‘utf-8‘) return page for i in range(251): htmlstr = getnothing(url=url,data=data,headers=headers) pattern = re.compile(‘\d+‘) nothingnum = re.findall(pattern,htmlstr) if nothingnum: data[‘nothing‘] = nothingnum[0] if len(nothingnum)>1: data[‘nothing‘] = nothingnum[1] else: data[‘nothing‘] = str(int(data[‘nothing‘])/2) print(str(i) + " ---- " + htmlstr) print(data[‘nothing‘])
答案:
250 ---- peak.html
心得:在第85次和第140次的時候分別有個小坑
85 ---- Yes. Divide by two and keep going ... ... ... 140 ---- There maybe misleading numbers in the text. One example is 82683. Look only for the next nothing and the next nothing is 63579
使用python 3.x 對pythonchallenge-----4的解答過程