关卡地址:http://www.pythonchallenge.com/pc/def/ocr.html(点击前往)
这一关卡信息一样很是精简,只有短短的一句话,而后其余信息都没有什么用,真心用心良苦(能说这个做者操蛋吗)。很少说了,话语中提到了
页面源码,那咱们就看看源码有什么。
整个源码都是html的一些标签没什么特别,知道有一段注释,应该答案就在这段信息里面了,可是观察了好久,没有什么头绪,来看看听雨轩点击前往的讲解,原来是在这段注释中寻找英文字母,好吧做者你赢了。
思路是:用 urllib.request.open 获取连接,用其read()函数读取 html 源码,再用正则提取注释的内容,在提取以后的内容寻找内容当中的字母就是咱们的结果。
代码以下:html
# -*- coding: UTF-8 -*- import urllib.request import re import string url = urllib.request.urlopen('http://www.pythonchallenge.com/pc/def/ocr.html') page = url.read().decode('utf8') # 在Python中urlopen返回的response是byte类,须要转成string类 pattern = re.compile(r'<!--[^>]*?-->') # 注释是在<!-- 和-->,这里使用?是想最短匹配,不过好像不加也没有影响 m = re.findall(pattern, page) comment = m[1] # m[0]只是提示语,略去 out = list(filter(lambda x: x in string.ascii_letters, comment)) print(''.join(out))
在Python3中filter函数再也不直接返回列表,而是返回一个生成函数,须要再次list函数来处理。python