刚开始学习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('')
print (acs)
print(cdict)
# print(cdict[31532])
# glyf=list(font1['glyf'].keys())
# print(glyf)
# bfd=glyf.index('_#58')
# print(bfd)

学习Python3 天眼查 爬虫的更多相关文章

  1. 直接请求json文件爬取天眼查企业信息(未解决验证码问题)——python3实现

    几个月前...省略一堆剧情...直接请求json文件爬取企业信息未成功,在知乎提问后,得到解决,有大佬说带上全部headers和cookie是可以的,我就又去试了下,果然可以(之前自己试的时候不行,没 ...

  2. python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容

    python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容 Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖 ...

  3. python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息,抓取政府网新闻内容

    python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI,采用Python语言编写 ...

  4. python+selenium+xpath 爬取天眼查工商基本信息

    # -*- coding:utf-8 -*-# author: kevin# CreateTime: 2018/8/16# software-version: python 3.7 import ti ...

  5. XPath2Doc,一个半自动采集网页生成Word Docx文件的工具,带企查查和天眼查模板

    原始出处:https://www.cnblogs.com/Charltsing/p/XPath2Doc.html 很多人需要从网站采集一些数据填写Word模板,手工操作费时费力还容易出错,所以我给朋友 ...

  6. Python学习 —— 实现简单的爬虫

    为了加快学习python3.x,查了许多资料后写了这个脚本,这个脚本主要是爬取百度图片'东方幻想乡'的图片,但还是有很多问题存在. 下面给出代码: # 更新了一下代码 from urllib impo ...

  7. Python爬虫学习:三、爬虫的基本操作流程

    本文是博主原创随笔,转载时请注明出处Maple2cat|Python爬虫学习:三.爬虫的基本操作与流程 一般我们使用Python爬虫都是希望实现一套完整的功能,如下: 1.爬虫目标数据.信息: 2.将 ...

  8. Python爬虫学习:二、爬虫的初步尝试

    我使用的编辑器是IDLE,版本为Python2.7.11,Windows平台. 本文是博主原创随笔,转载时请注明出处Maple2cat|Python爬虫学习:二.爬虫的初步尝试 1.尝试抓取指定网页 ...

  9. 从零开始学习PYTHON3讲义(一)认识Python

    课程名称 从零开始PYTHON3 课程长度 15讲 适用年龄 15-20岁(初三-大一) 本讲名称 认识Python 时长 90分钟 教学内容分析 Python是时下最流行的计算机编程语言之一.本课程 ...

随机推荐

  1. 2—ARM中的异常中断

    ARM体系中的3种控制程序执行的方式 正常执行过程中,每执行1条ARM指令,PC的值加4个字节:每执行1条Thumb指令,PC的值加2个字节.整个过程按照顺序执行. 通过跳转指令,调到特定的地址开始执 ...

  2. 贝塞尔(Bezier) 曲线 研究

    贝塞尔曲线最近经常接触到,今天研究了一下. 原理 关于它的原理,网上有很多. 1.一阶 2.二阶 3.多阶 可以看到,多阶可以慢慢降阶为一阶贝塞尔曲线. //一阶 private Vector3 Ba ...

  3. python笔记1——关于文件的打开与读写

    一.文件的打开与关闭1.open,close函数 #-*- coding:utf-8 -*- # 1.w 写模式,它是不能读的,如果用w模式打开一个已经存在的文件,会清空以前的文件内容,重新写 # w ...

  4. linux中tar及压缩解压命令用法

    把常用的tar解压命令总结下,当作备忘: tar 命令可以为Linux的文件和目录创建档案.利用 tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向 档案中加入新的文件.t ...

  5. wpf binging(三) 绑定方法的返回值

    有时候我们不能绑定对象的属性或者成员,我们需要绑定一个对象的方法时 可以用 ObjectDataProvider 比如先声明一个类 含有加法 ObjectDataProvider 的简单使用 以下为综 ...

  6. ElementUI - Table 表头排序

    ElementUI - Table 表头自带排序功能,和排序事件,但是目前只是对当前界面的数据进行排序. 项目需求: 点击表头排序的时候,对所有数据进行排序. 初步方案: 在点击排序按钮的时,在排序事 ...

  7. leetcode 买卖股票问题

    leetcode121 Best Time to Buy and Sell Stock 说白了找到最大的两组数之差即可 class Solution { public: int maxProfit(v ...

  8. Knut重排算法

    /// <summary> /// 这是Knut重排算法的实现 /// </summary> /// <param name="number"> ...

  9. 执行monkey APK 制作

    一.主布局文件 activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/an ...

  10. 2018 ICPC南京网络赛 L Magical Girl Haze 题解

    大致题意: 给定一个n个点m条边的图,在可以把路径上至多k条边的权值变为0的情况下,求S到T的最短路. 数据规模: N≤100000,M≤200000,K≤10 建一个立体的图,有k层,每一层是一份原 ...