python 爬蟲之字體(@font-face)防爬

python 爬蟲 字體(@font-face)防爬

字體防爬就是該網站在源碼上的字體不是正常字體編碼, 可能是自定義的一種字體, 然後通過對應關係在頁面上進行展示, 這就是所謂的字體防爬, 但是他們想要在頁面上進行展示的話還是需要導入字體包的, 所以咱們只需要把字體包下載下來進行對應關係轉換就可以獲得正確的內容了

一 主要是找到該網站導入的字體包的路徑

這就是一般網站的字體路徑, 後面的那個url在新頁面打開就可以自動下載字體在這裏插入圖片描述
如果直接在源碼找不見的話, 那就打開開發者調試工具, 在network裏面搜索font 字體, 找到字體的url地址, 進行下載

二 就是解析字體了

需要下載  fontTools 包, 然後下面直接上代碼
from fontTools.ttLib import TTFont
#解析字體文件,獲取字體映射關係
def parse_font():
    font1 = TTFont('/Users/admin/Downloads/b.ttf')
    keys, values = [], []
    for k, v in font1.getBestCmap().items():
        if v.startswith('uni'):
            keys.append(eval("u'\\u{:x}".format(k) + "'"))
            values.append(chr(int(v[3:], 16)))
        else:
            keys.append("&#x{:x}".format(k))
            values.append(v)
    print(keys, values)
    return dict(zip(keys, values))
這樣就可以獲取到 字體和編碼的對應關係, 然後直接把抓取的亂碼在對應關係裏面進行轉換就可以了

需要注意的是, 可能有的網站防爬可能會在編碼上再給你加點難度, 比如數字的話: 你編碼解出來是 5, 但實際是3, 遇到這種不要慌, 很有可能就是減法而已, 自己多測幾次知道公式就好了

###參考鏈接
https://blog.csdn.net/weixin_40214188/article/details/82596478

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章