python challenge 解题 第4关

第四关

点击图片,跳转到页面,显示文本为“and the next nothing is xxx”,查看源代码提示,尝试400次就足够找到页面。
本关是用文本中的数字替换url中的数字,找到真正的下一关链接。
运用爬虫基础。

import requests

# 初始化第一次的url
url = "http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=12345"
r = requests.get(url)

# 循环四百次
for i in range(400):
    print(r.text)
    url = "http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=" + r.text.split()[-1]
    r = requests.get(url)

查看输出,大多数输出都是“and the next nothing is”, 某一次输出是以“.html”结尾的,这行就是答案了,输入到URL中。
中间有一些输出很有意思,有的输出中不带数字,比如

Yes. Divide by two and keep going.

用我的代码, catch到的是最后一个单词 going,如果把going输入到URL中替换数字也可以继续进行。或者像它提示的那样,把url中的数字除以2,也可以继续进行。
我又写了段代码,让它可以在提示的地方把数字除以2。但是结果也是一样的,也没有加快得到结果的速度。

for i in range(400):
    print(r.text, ' and catch: ', r.text.split()[-1])
    try:
        nr = int(r.text.split()[-1])
        url = "http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=" + r.text.split()[-1]
        r = requests.get(url)
    except:
        # 如果最后一个单词不是数字,就把url中的数字除以二。
        nr = nr / 2
        url = "http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=" + str(nr)
        r = requests.get(url)

你可能感兴趣的:(python,python)