[流量预警,6张图]

初步分析了下,应该是用了自定义字体。以前没怎么见过,只听别人说过, 很好奇,就分析了以下,还是很好破的,请看我的分析过程:

首先,看网页源码:

这种形式应该是字符的某种编码,和字体文件是一一对应的,分析css后发现他用了myFont这个字体,并找到了这个字体的定义,base64编码的,

为了确认一开始的假设,把这段css复制出来,写一个html测试(限于篇幅,base64编码省略了):

然后浏览器里打开:

能正常显示,证明假设是对的,就是这个字体文件。

现在,我的想法是能把这个字体文件里面所有的字和编码对应关系表拿到,就能对付乱码问题了。

先要把base64编码过的文件转换成文件,先把base64编码部分(从d09GRgABAAAAA开始到jO7Tgg==)复制后保存到文件(font.base64)

import base64

base64.decode(open('font.base64','rb'), open('fff','wb'))

现在得到了真正的字体文件,但不知道格式,没法分析。

二进制文件一般开头都有一些magic number来说明文件的类型,用十六进制编辑器打开文件(其实记事本也可以),

看到前四个字符是wOFF,搜索后得知这是一个woff格式的字体,

这下就简单了,找个woff字体编辑器就好了,搜了半天,发现都好麻烦,各种安装程序,还是国外的,速度好慢。

无意间找到这个FontEditor,百度的(百度搜索时竟然没有,在Google上找到的)

在线的,贼好用。

直接点open上传字体文件,就看到了所有字,他把常用的字弄这个里面了。

现在,就有了字和编码关系对应表。

想一次拿到编码还是有点小问题,复制好麻烦,可以在Chrome的Console里用js来干这事

//这个页面用了JQ,所以直接用,很方便$('.glyf-item ').each( function(){

console.log($(this).find('div.unicode').attr('title'));

//这里只是输出了,可以放数组里,方便一次复制})

然后,把对应关系放字典里,替换就好了。

字典应该长这样

{

'eb6d': "0",

'e196': "1",

'e15c': "2",

.........

}

举个列子:

html里的  编码部分是e196 拿到编码直接用dict['e196']就能得到真正的字。

提供一种转换思路:

>>> import re

>>> s=''

>>> d = {'e15c': "2", 'eb6d': "0", 'e196': "1", 'f43a': "7" }

>>>fs = re.sub(r'\w{4}', lambda m: '{' + m.group()[3:] + '}', s)

>>>fs

'{e15c}{eb6d}{e196}{f43a}'

>>>fs.format(**d)

'2017'

到此就可以解析出文本了。写的有些乱,不懂的地方欢迎追问。

附全部字体

python汉字编码错误_python爬虫中文编码的问题?相关推荐

  1. python汉字编码错误_python解决汉字编码问题:Unicode Decode Error

    前言 最近由于项目需要,需要读取一个含有中文的txt文档,完了还要保存文件.文档之前是由base64编码,导致所有汉字读取显示乱码.项目组把base64废弃之后,先后出现两个错误: 如果对于ascii ...

  2. python汉字编码错误_python文件以错误的编码utf8加载

    我对编程相当陌生,我不理解我得到的这个错误消息,file was loaded in the wrong encoding utf-8或者它不是代码中的错误消息,但是我在我的新的.txt文件中得到了它 ...

  3. python爬虫ssl错误_Python爬虫:Requests的SSLError:certificate verify failed问题解决方案6条...

    问题:脚本是用Python写的,用到开源库play-scraper,调用其collectionAPI来获取Google Play的Top App列表.该库使用了requests作为客户端来对Googl ...

  4. python post请求参数错误_python爬虫 post请求 参数错误

    [Python] 纯文本查看 复制代码#!/usr/bin/env python # -*- coding: utf-8 -*- import requests def test_request(): ...

  5. python 简单网页_Python爬虫 (一):爬取一个简单的静态网页

    版本:python3.7 平台:windows10 工具 :pycharm 断断续续学习了py3爬虫2周左右的时间,发现自己学习的过于零散化,所以想通过这个专栏系统的整理下自己所学过的知识.如有错误, ...

  6. python bs4模块_python爬虫之Beautifulsoup模块用法详解

    什么是beautifulsoup: 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.(官方) beautifulsoup是 ...

  7. python异常数据处理_Python爬虫提高之异常处理

    Python爬虫框架之异常处理 任何访问服务器获取数据的请求,都需要做异常处理,当然爬虫更需要我们对各种异常进行处理.只有这样才能提高爬虫的健壮性.如果我们的爬虫足够健壮,那么就能确保程序几个月不停止 ...

  8. python解析原理_python爬虫原理

    简单来说互联网是由一个个站点和网络设备组成的大网,我们通过浏览器访问站点,站点把HTML.JS.CSS代码返回给浏览器,这些代码经过浏览器解析.渲染,将丰富多彩的网页呈现我们眼前: 一.爬虫是什么? ...

  9. python 爬取_Python爬虫爬取马蜂窝北京景点信息

    背景 来北京有些日子了,但是每个周末都窝在六环外的村里躺着.想想不能再这么浪费时间了,得出去玩!但是去哪玩呢?于是乎想着,先把北京的景点以及位置都保存起来,然后在分析分析做个出行计划.从哪里获取景点信 ...

最新文章

  1. PHP监控linux服务器负载
  2. [转]C#中得到程序当前工作目录和执行目录的一些方法
  3. eclipse 插件 ---Android 模拟器genymotion安装(整理)
  4. 【Java】线程通信的例子:用两个线程打印 1-100;生产者消费者问题
  5. ceontos7安装mysql5.5_centos7 安装mysql5.7及配置
  6. 局部变量和成员变量的区别
  7. 拜登政府冻结加密钱包规则以待审查 加密市场或迎来转机
  8. 74.4k star 项目 YouTube-dl 重新上线,GitHub 强调将重点支持开源!
  9. centos 卸载_9个Linux发行版本,教你如何分别使用命令行卸载安装包
  10. python gif_Python-字符版gif图
  11. 拳王虚拟项目公社:虚拟资源项目超详解,人人皆可熟练操作
  12. matlab欧式期权定价公式,[转载]期权定价的Matlab实现(以欧式看涨期权为例)
  13. 前端快速上手APICloud App开发
  14. 数据库加密sqlite3
  15. 【游戏设计系列】关于游戏设计文档
  16. 云安全将来时 | 云安全的发展与未来趋势
  17. C# 远程唤醒(远程开机)
  18. sql查找数据中某个字段是否有重复的值
  19. 中关村被骗记(维权全过程)
  20. ZigBee的发展也有“碎片化”

热门文章

  1. 苹果新的编程语言 Swift 语言进阶(二)--基本数据类型
  2. 阿里巴巴最新开源项目 - [HandyJSON] 在Swift中优雅地处理JSON
  3. VMWare 虚拟机工作站 + Ubuntu操作系统安装
  4. shell date cal
  5. 来,一起见识下全球海底光缆分布图
  6. 新旧版CCNP路由交换考试注意事项
  7. 通过 ASP.NET 2.0 的数据增强功能来提高负载和减少代码 --作者:Dino Esposito
  8. 一文读懂什么是数据库事务
  9. 12款Javascript表格控件(DataGrid)
  10. Spring中IOC和AOP的详细解释(转)