?一个超有意思的 Python 综合能力测试网站( 二 )


后面每一关都需要用到相关的技巧解决,比如第 4 关:
mark
这一关作者弄了个小恶作剧,需要手动输入数值到 url 中然后回车,你以为这样就完了么?并没有它有会不断重复弹出新的数值让你输入,貌似无穷尽 。
所以,这一关肯定不能采取手动输入的方法闯关,自然要用到了 。要实现自动填充修改 url 回车跳转到新 url,循环直到网页再也无法跳转为止这一功能 。
如果是你,你会怎么做?
其实,一段简单的爬虫加正则就能搞定 。思路很简单,把每次网页中的数值提取出来替换成新的 url 再请求网页,循环下去,代码实现如下:
1import requests2import re3import os45# 首页url6resp = requests.get(7'http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=12345').text8url = 'http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing='9# 计数器10count = 011while True:12try:13# 提取下一页动态数值14nextid = re.search('\d+', resp).group()15count = count + 116nextid = int(nextid)17except:18print('最后一个url为:%s' % nexturl)19break2021# 获取下一页url22nexturl = url + str(nextid)23print('url %s:%s' % (count, nexturl))24# 重复请求25resp = requests.get(nexturl).text
输出结果如下:
可以看到,最终循环了 85 次找到了最后一个数字16044,输入到 url 中就闯关成功 。
33 关既有趣又能锻炼使用解决问题的技巧,感兴趣的话去玩玩看 。
如果遇到不会做的题,可以在这里找到参考答案:
中参考文教程:
【?一个超有意思的 Python 综合能力测试网站】官方参考教程: