學習Python3 天眼查 爬蟲


剛開始學習Python,不願意看基礎,記憶不好,那些語法記不住,直接上個項目,這樣比較深刻

剛好公司有個情況要查企業的信息,就想做個爬蟲吧,有驗證碼的不願意搞,那是個老大難問題,就選擇了天眼查

過程都略了,直接寫個結果吧,總結出來的步驟如下:

一、天眼查最大的障礙在於字體問題,這個網上都有介紹,大概意思就是說,在網頁顯示出來的某些字符,是天眼查自己的字體文件處理的。

比如漢字 坐  的utf-8的編碼是 b'\\u5750'  ,但在天眼查的字體文件里,這個編碼對應的漢字是  萬 。

這樣在頁面上某些地方肉眼看到的比如 2500萬元,但實際通過標准編碼得到的是 2500坐元。其實還有數字,也全部是打亂的。

這樣爬到的結果就是后面那個了,這不是我想要的。

二、該字體文件,每天都變,沒有固定的,這樣想通過做個編碼對應表的方法也被否決了。

三、只能一步一步來了,先把該字體文件下載下來,然后通過 fontTools 來操作字體文件,我通過轉成xml文件,結合fontCreator,看了一下字體文件的結構,大概知道是怎么回事了

from fontTools.ttLib import TTFont
font1 = TTFont('D:/Temp/num4.woff')
font1.saveXML('D:/Temp/font4.xml')

四、把字體結構弄清楚之后,把里面所有的編碼,結合該字體,生成位圖。

import os
import PIL.Image, PIL.ImageFont, PIL.ImageDraw

image=PIL.Image
ImageDraw=PIL.ImageDraw
ImageFont=PIL.ImageFont

text = u"" 

im = image.new("RGB", (300, 50), (255, 255, 255))
dr = ImageDraw.Draw(im)
font = ImageFont.truetype(os.path.join("fonts", "d:/temp/num4.woff"), 14)

dr.text((10, 5), text, font=font, fill="#000000")

im.show()
im.save("d:/temp/t.png")
#因為我只是學習,所以並沒有寫完整代碼,以上代碼只是用來結合字體生成圖片的示例

五、把字體文件中涉及到的字按順序生成的圖片,通過OCR識別成字,這個我前面的文章就是專門有寫ocr的,識別率100%

六、得到的結果應該是這樣的

七、最后通過抓取的結果,然后轉成對應的編碼,即可得到想要的結果了

八、其它,用fonttools直接獲取字體相關的數據如下代碼

from fontTools.ttLib import TTFont
font1 = TTFont('D:/Temp/num3.woff')
cmap=font1['cmap']
cdict=cmap.getBestCmap()
acs=ord('3')
print (acs)
print(cdict)
# print(cdict[31532])
# glyf=list(font1['glyf'].keys())
# print(glyf)
# bfd=glyf.index('_#58')
# print(bfd)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM