继续挑战!
第2题地址ocr.html
- 图片是一本打开的书
- 题目说明是要识别字符(
ocr
就是字符识别嘛),提示maybe they are in the book, but MAYBE they are in the page source.
- 页面最底下提示可以把URL里面的
pc
改成pcc
看上一题的答案(其他信息是重复的tips)
我暂时也没这么蠢想要对图片做OCR,毕竟清晰度不够。
题目提示说要识别的字符在页面源码里嘛,我们用浏览器的view-source:
看看。
结果发现网页最下面有一小段文字和一超大段乱码:
<!– find rare characters in the mess below: –>
<!– %%$@$^__#)^)&!+]!@&^}@@%%+$&[(_@%+%$^@$^!+]!&#)}{}}!}_]$[%}@[{_@#_^{ … –>
看来这个才是真正的题目😅
为了不显得那么笨拙,我就没有copy-paste了,使用python爬虫常用的requests
和re
模块进行数据获取:
import re
import requests
response = requests.get('http://www.pythonchallenge.com/pc/def/ocr.html').text
messy_str = re.findall(r'<!--(.*?)-->', response, re.DOTALL)[1]
根据题目意思,要找出稀有的字符。我们来做个统计:
from collections import Counter
c = Counter(messy_str)
print(c)
Counter({')': 6186, '@': 6157, '(': 6154, ']': 6152, '#': 6115, '_': 6112, '[': 6108, '}': 6105, '%': 6104, '!': 6079, '+': 6066, '$': 6046, '{': 6046, '&': 6043, '*': 6034, '^': 6030, '\n': 1221, 'e': 1, 'q': 1, 'u': 1, 'a': 1, 'l': 1, 'i': 1, 't': 1, 'y': 1})
从结果看到,在乱码中居然还有几个字母,完善一下将字母取出:
print(''.join(k for k, v in c.items() if v < 3))
equality
用结果输入到URL上equality.html,确实是下一题,成功!