以大众点评分类下面的火锅为例
查看网页源代码
根据这边显示的信息 可以判断出 大众点评是使用了css加密,接下来查找页面上所有css文件
这边可以看出来使用的字体种类,接下来按照固定思路解决就好
步骤:
1. 找到存放woff文件的css链接,并请求
2. 找到woff文件的url,并请求(下载woff文件)
3. 通过TTFont模块读取woff文件,得到16进制数
4. 手动生成一个字典(作用:汉字和16进制数的对照表)
5. 将页面中的16进制数替换成真实值
6. 以上完成,css解密即可完成
import requests,re
from fontTools.ttLib import TTFont
# 定义生成字典函数
def get_dict(url):
# 对css链接发起请求
response = requests.get(url=url,headers=headers)
# 制定获取分类名规则
type_name_patten = re.compile(r'"PingFangSC-Regular-(.*?)";')
# 获取分类
type_name_list = type_name_patten.findall(response.text)
# 定义提取woff文件的规则
woff_url_pattern = re.compile(r',url\("(.*?)"\)')
# 获取woff链接
woff_url_list = woff_url_pattern.findall(response.text)
# 请求每一个woff文件
for type_name,woff_url in zip(type_name_list,woff_url_list):
# 拼接成完整的woff链接
woff_url_full = 'http:'+woff_url
# 获取文件名
woff_name = woff_url_full.split('/')[-1]
# 发起请求
woff_response = requests.get(url=woff_url_full,headers=headers)
# 保存文件
# 注意:woff文件不是文本类型,是二进制的数据
with open(type_name+'-'+woff_name,'wb') as fp:
fp.write(woff_response.content)
# 读取文件
woff_font = TTFont(type_name+'-'+woff_name)
# 保存xml格式数据
# woff_font.saveXML('woff.xml')
# 获取16进制数
woff_font_content = woff_font.getGlyphOrder()
# 去除前面两个内容
keys = woff_font_content[2::]
data = {}
for k,v in zip(keys,woff_list):
data[k] = v
type_dic[type_name] = data
# for k,v in zip(keys,woff_list):
# data[k] = v
# print(woff_font_content)
# print(woff_url)
...
# 定义函数
def get_content():
# 发起请求,接收响应
response = requests.get(url=base_url,headers=headers)
# 获取页面内容
content = response.text
# 提取css链接
# 指定提取css链接规则
css_href_pattern = re.compile(r'href="(//s3plus.*?)"')
css_href = css_href_pattern.findall(content)[0]
# 拼接完整链接
css_full_href = 'http:' + css_href
get_dict(css_full_href)
# 开始替换
# for k,v in data.items():
# # 替换
# content = content.replace('&#x'+k[-4::]+';',v)
# 获取评价及人均价格
get_shopNum(content)
print(type_dic)
# 定义获取评价和人均价格的函数
def get_shopNum(content):
shopNum = type_dic['shopNum']
# 开始替换
for k,v in shopNum.items():
# 替换
content = content.replace('&#x'+k[-4::]+';',v)
print(content)
...
if __name__ == '__main__':
# type_dic = {'tagName':{'16进制数':'值'},'shopNum':{'16进制数':'值'},'address':{16进制数:值},'reviewTag':{16进制数:值}}
type_dic = {}
# 定义基础URL
base_url = 'http://www.dianping.com/beijing/ch10'
# 定义请求头字典
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36',
}
# 定义woff_list
woff_list = ['1', '2', '3', '4', '5', '6', '7', '8',
'9', '0', '店', '中', '美', '家', '馆', '小', '车', '大',
'市', '公', '酒', '行', '国', '品', '发', '电', '金', '心',
'业', '商', '司', '超', '生', '装', '园', '场', '食', '有',
'新', '限', '天', '面', '工', '服', '海', '华', '水', '房',
'饰', '城', '乐', '汽', '香', '部', '利', '子', '老', '艺',
'花', '专', '东', '肉', '菜', '学', '福', '饭', '人', '百',
'餐', '茶', '务', '通', '味', '所', '山', '区', '门', '药',
'银', '农', '龙', '停', '尚', '安', '广', '鑫', '一', '容',
'动', '南', '具', '源', '兴', '鲜', '记', '时', '机', '烤',
'文', '康', '信', '果', '阳', '理', '锅', '宝', '达', '地',
'儿', '衣', '特', '产', '西', '批', '坊', '州', '牛', '佳',
'化', '五', '米', '修', '爱', '北', '养', '卖', '建', '材',
'三', '会', '鸡', '室', '红', '站', '德', '王', '光', '名',
'丽', '油', '院', '堂', '烧', '江', '社', '合', '星', '货',
'型', '村', '自', '科', '快', '便', '日', '民', '营', '和',
'活', '童', '明', '器', '烟', '育', '宾', '精', '屋', '经',
'居', '庄', '石', '顺', '林', '尔', '县', '手', '厅', '销',
'用', '好', '客', '火', '雅', '盛', '体', '旅', '之', '鞋',
'辣', '作', '粉', '包', '楼', '校', '鱼', '平', '彩', '上',
'吧', '保', '永', '万', '物', '教', '吃', '设', '医', '正',
'造', '丰', '健', '点', '汤', '网', '庆', '技', '斯', '洗',
'料', '配', '汇', '木', '缘', '加', '麻', '联', '卫', '川',
'泰', '色', '世', '方', '寓', '风', '幼', '羊', '烫', '来',
'高', '厂', '兰', '阿', '贝', '皮', '全', '女', '拉', '成',
'云', '维', '贸', '道', '术', '运', '都', '口', '博', '河',
'瑞', '宏', '京', '际', '路', '祥', '青', '镇', '厨', '培',
'力', '惠', '连', '马', '鸿', '钢', '训', '影', '甲', '助',
'窗', '布', '富', '牌', '头', '四', '多', '妆', '吉', '苑',
'沙', '恒', '隆', '春', '干', '饼', '氏', '里', '二', '管',
'诚', '制', '售', '嘉', '长', '轩', '杂', '副', '清', '计',
'黄', '讯', '太', '鸭', '号', '街', '交', '与', '叉', '附',
'近', '层', '旁', '对', '巷', '栋', '环', '省', '桥', '湖',
'段', '乡', '厦', '府', '铺', '内', '侧', '元', '购', '前',
'幢', '滨', '处', '向', '座', '下', '県', '凤', '港', '开',
'关', '景', '泉', '塘', '放', '昌', '线', '湾', '政', '步',
'宁', '解', '白', '田', '町', '溪', '十', '八', '古', '双',
'胜', '本', '单', '同', '九', '迎', '第', '台', '玉', '锦',
'底', '后', '七', '斜', '期', '武', '岭', '松', '角', '纪',
'朝', '峰', '六', '振', '珠', '局', '岗', '洲', '横', '边',
'济', '井', '办', '汉', '代', '临', '弄', '团', '外', '塔',
'杨', '铁', '浦', '字', '年', '岛', '陵', '原', '梅', '进',
'荣', '友', '虹', '央', '桂', '沿', '事', '津', '凯', '莲',
'丁', '秀', '柳', '集', '紫', '旗', '张', '谷', '的', '是',
'不', '了', '很', '还', '个', '也', '这', '我', '就', '在',
'以', '可', '到', '错', '没', '去', '过', '感', '次', '要',
'比', '觉', '看', '得', '说', '常', '真', '们', '但', '最',
'喜', '哈', '么', '别', '位', '能', '较', '境', '非', '为',
'欢', '然', '他', '挺', '着', '价', '那', '意', '种', '想',
'出', '员', '两', '推', '做', '排', '实', '分', '间', '甜',
'度', '起', '满', '给', '热', '完', '格', '荐', '喝', '等',
'其', '再', '几', '只', '现', '朋', '候', '样', '直', '而',
'买', '于', '般', '豆', '量', '选', '奶', '打', '每', '评',
'少', '算', '又', '因', '情', '找', '些', '份', '置', '适',
'什', '蛋', '师', '气', '你', '姐', '棒', '试', '总', '定',
'啊', '足', '级', '整', '带', '虾', '如', '态', '且', '尝',
'主', '话', '强', '当', '更', '板', '知', '己', '无', '酸',
'让', '入', '啦', '式', '笑', '赞', '片', '酱', '差', '像',
'提', '队', '走', '嫩', '才', '刚', '午', '接', '重', '串',
'回', '晚', '微', '周', '值', '费', '性', '桌', '拍', '跟',
'块', '调', '糕']
get_content()
软件名称为 High-Logic FontCreator 可自行下载