1. 程式人生 > >python 爬蟲之字型(@font-face)防爬

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