The Python Challenge爬塔记录3—4

sunmengqi    2018-11-13 09:20

第三关:

   按照提示,也是应该要在源码里面看了吧。翻开源码,果然又是一坨乱码,这是造的什么孽。

   要找出“一个小写字母,两侧都被三个大写字母包围”这样类型的字符串,首选果然还是正则。

   开始的时候我犯了个错误,标记一下——这里注意:要找的是类似“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

 

 

Views: 1.9K

[[total]] comments

Post your comment
  1. [[item.time]]
    [[item.user.username]] [[item.floor]]Floor
  2. Click to load more...
  3. Post your comment