第三关:
按照提示,也是应该要在源码里面看了吧。翻开源码,果然又是一坨乱码,这是造的什么孽。
要找出“一个小写字母,两侧都被三个大写字母包围”这样类型的字符串,首选果然还是正则。
开始的时候我犯了个错误,标记一下——这里注意:要找的是类似“aAAAaAAAa”的,而非“AAAaAAA”,这很重要。
还是将那一长串字符串作为“str1”,代码如下:
import re
result=re.findall("[a-z]{1}[A-Z]{3}[a-z]{1}[A-Z]{3}[a-z]{1}",str1)
print(result)
最后得到结果为:
['qIQNlQSLi', 'eOEKiVEYj', 'aZADnMCZq', 'bZUTkLYNg', 'uCNDeHSBj', 'kOIXdKBFh', 'dXJVlGZVm', 'gZAGiLQZx', 'vCJAsACFl', 'qKWGtIDCj']
小写字母为:linkedlist,所以输入网址:http://www.pythonchallenge.com/pc/def/linkedlist.html,得到这么一个东西:
恩,思考了一下输入:http://www.pythonchallenge.com/pc/def/linkedlist.php进入第4关。
第4关:
这是个什么东西??没提示的吗?
点一下图片居然就跳转了。。。。
试着将nothing改为等于44827,
然后。。。。
我确实累了老铁。。。。
你不是都知道我累了吗。。。。。
情况有点不对。。。。再这样下去手要折了
我们来设计一个爬虫处理一下这个问题,发现每次网页的ID都是5位,还好还有点良心。
import urllib.request
src = urllib.request.urlopen('http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=12345')
nexturl = None
url = 'http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing='
count=0
while True:
nextid = int(src.readline()[-5:])
count=count+1
nexturl = url+str(nextid)
print(count,nexturl)
src.close()
src = urllib.request.urlopen(nexturl)
结果发现,程序在最后报错:
那么也就是说最后不再是5位数字了,网页内容有了变化,访问最后一个链接得到:
将16044除以2得到8022,访问下一个网址,得到心提示“and the next nothing is 25357”,继续然后运行上述代码。
由于网速问题这一题经常会失败,最后得到下一题网址:http://www.pythonchallenge.com/pc/def/peak.html