字体反爬之使用TTFont模块来打开字体文件

案例目标网站:python实习_python实习生招聘信息 – 实习僧

可以看出日薪这个字段是设置了字体反爬的,我们直接获取数据会出现乱码,需要结合样式才可以获取文本内容。

从图中可以看出,有乱码的样式都包含font这个样式,从右边可以查看font样式的位置,点击就可以跳转

字体反爬之使用TTFont模块来打开字体文件_第1张图片

这里就需要查找声明myFont的位置,才知道他是怎样的,在文件内搜索myFont可以找到定义的位置

下面的路径就是字体文件的下载链接:/interns/iconfonts/file?rand=0.7275526622248008拼接域名就是下载地址,由此可以下载地址文件。但是此文件打不开,需要用TTFont模块来生成ttf文件

from fontTools.ttLib import TTFont

# 读取下载后文件

ttf = TTFont('fontfile') 
 
# 将下载后文件保存为ttf文件,方便在High-Logic FontCreator中打开

ttf.save('fontfile.ttf')  

然后用Download FontCreator工具手动或使用ocr来创建映射,得到 类似于

{'':'2'}

的映射。

import re
import requests
download_url = 'https://www.shixiseng.com/interns/iconfonts/file?rand=0.7275526622248008'
url = 'https://www.shixiseng.com/interns?keyword=python&city=%E5%85%A8%E5%9B%BD&type=intern'
headers = {
    'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',
}

resp = requests.get(url,verify=False)
result_txt = resp.text
pattern = re.compile(r'(.*?)-(.*?)/天',re.S)
result = re.findall(pattern,result_txt)     #最低价与最高价组成一个元组,多个元组组成result列表,价格内容是
for price_tuple in result:
    min_price = price_tuple[0]
    max_price = price_tuple[1]
    min_price_list = min_price.split('&#')[1:]
    min_value = ''
    for p in min_price_list:
        key = '&#'+p
        min_value += map_dic[key]
    min_price = min_value
    max_price_list = max_price.split('&#')[1:]
    max_value = ''
    for p in max_price_list:
        key = '&#' + p
        max_value += map_dic[key]
    max_price = max_value

再根据之前得到的字典,就可以还原内容了

 

 

 

你可能感兴趣的:(数学建模)