在解析网页时,时常可以看到如下情景:
即在UTF-8编码显示下,网页文字以方块形式出现,防止直接复制。
而网页显示则正常如下:
这种情况下,我们需要的仅仅是数字,则需要找到相应的字体对应规则。
当然,前提是这个网页还是比较沙雕的情况下才可以用土办法,我之前也在网上找了一些帖子学习了一下,例如:如何解决爬虫过程中网页中数字解析为方块的问题,第一个答案写的挺好,但是还是缺乏普适性,有两个问题,1是使用网页内容ASICII码到Unicode后,内容依旧乱码,原因在于大部分python学习者普遍用的还是UTF-8编码,而且编码与译码的知识相对繁琐,对初学者不够友好。2是,网页未必只有一种字体对应方式。
根据上述两个问题,我们分别提出有限的解决方案:
首先,转码,将字符串转为bytes类型:
而后,根据0~9各个字符的bytes类型编码,建立对应词典,示例中这个网站的网页载入有点贱嘻嘻,弄了三套对应的转换模式,现在也不知道是否每天还会更新,反正人肉分别将30个bytes类型编码与字符串做对应,用数组或者字典皆可。
最后就可以根据内容来进行转码了。
上面说到这是有限的解决方案,原因在于,如果网站实行动态加密,那可能就要去看具体的js内容了,再就是有的可能是图片,可能需要OCR来进行辅助。
在爬相应的网站的时候,友好起见,我使用了selenium+chromedriver,载入后,再刷新一次,效果更好,说的好像刷新一次以后,就不是机器人了一样哈哈。
如上,欢迎各位大师or小白来与我交流Python或数据科学相关问题。我的邮箱是dongyue_mogician@163.com。