一些** 會將部分內容進行加密,防止爬蟲簡單的獲取到資訊
最近 在爬取58同城的品牌公寓時 遇到租房資訊裡的** 爬下來是看不懂的字型
一些資料在瀏覽器裡面顯示是正常的, 但是渲染前和渲染後的html原始碼都看不到字型, 渲染前看到的是16進製制的4位字元, 渲染後看到的是一些方塊.
然後分析了一下**的原始碼,發現他是由base64 加密之後生成的字型
那我們就可以通過正則匹配出來進行處理
首先在html原始碼裡面找到woff字型的base4編碼, 儲存成」font.woff」字型檔案, 用fonttools庫將這個字型檔案儲存為」font.xml」檔案.
然後在xml裡面找到ttglyph欄位, 這個字段下面的 子字段都是用來畫字元(包括中英文數字)的座標. 同乙個字元的座標是一樣的. 解析xml, 然後把這些座標的屬性字典按順序都存到乙個list裡面, 然後序列化成json(加sort_keys=true引數)字串. 用這個字串當key, value是實際的字元, 存成乙個constant_dict. 每次遇到新網頁, 取出這個字串, 然後根據字串從constant_dict獲取實際的字元.
我們也可以借助乙個fontcreator 軟體 將font.woff」字型檔案檢視
每個字型都對應了乙個uni字元,和上面方法一樣序列化成json(加sort_keys=true引數)字串. 用這個字串當key, value是實際的字元, 存成乙個constant_dict. 每次遇到新網頁, 取出這個字串, 然後根據字串從constant_dict獲取實際的字元.
但是 事實並沒有這麼簡單 ,它的每個網頁都是變化的 對應關係並不是完全一致。所以這個時候我們就可以借助tesseract工具 來識別字型。
這個例子還是相比較簡單點的,我們還可以根據每個字元的點陣,找出對應關係,但是如果字型樣子改變,對應關係也就亂了。
python爬蟲文字加密 涉及字型加密的爬蟲分析
1.網頁分析 爬蟲嘛,最主要還是先分析分析網頁。網頁的載入方式 發現是純靜態載入的,說明資料就在html檔案裡 如何翻頁 通過觀察發現 是通過url的引數 k 控制職位關鍵字,引數 p 控制頁碼,所以 資料探勘 職位第一頁的請求url是 資料探勘 p 1 資料探勘 職位第二頁的請求url是 資料探勘...
爬蟲筆記(八) 例子匹配解析
coding utf 8 import re pattern a z a z s cn com result re.search pattern,string print result sre.sre match object span 9,29 match 提取 首先觀察它的格式,我們可以發現,所...
MD5 加密演算法全解析
全稱 message digest algorithm 5 翻譯過來就是 資訊 摘要 演算法 5 2.後續講解 3.關於md5加鹽 比如我的銀行密碼是 12345 1.得到的md5是 827ccb0eea8a706c4c34a16891f84e7b 2.乙個人擷取到這個密文,那麼通過撞庫肯定容易撞出...