學習Python3 天眼查 爬蟲

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

恰好公司有個狀況要查企業的信息,就想作個爬蟲吧,有驗證碼的不肯意搞,那是個老大難問題,就選擇了天眼查字體

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

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

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

這樣在頁面上某些地方肉眼看到的好比 2500萬元,但實際經過標準編碼獲得的是 2500坐元。其實還有數字,也所有是打亂的。xml

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

2、該字體文件,天天都變,沒有固定的,這樣想經過作個編碼對應表的方法也被否決了。圖片

3、只能一步一步來了,先把該字體文件下載下來,而後經過 fontTools 來操做字體文件,我經過轉成xml文件,結合fontCreator,看了一下字體文件的結構,大概知道是怎麼回事了utf-8

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

4、把字體結構弄清楚以後,把裏面全部的編碼,結合該字體,生成位圖。get

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")
#由於我只是學習,因此並無寫完整代碼,以上代碼只是用來結合字體生成圖片的示例

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

6、獲得的結果應該是這樣的

7、最後經過抓取的結果,而後轉成對應的編碼,便可獲得想要的結果了

8、其它,用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)
相關文章
相關標籤/搜索