以往爬虫没怎么研究过,最近有个需求,要从某网站采集敏感信息,稍稍考虑了一下,决定利用C# Winform和Python一起来解决这个事件。

整个解决方案不复杂:C#编写WinForm窗体,进行数据分析和采集, Python本来不想用的,一下子没找到C#下Woff字体转Xml的方案,而网上Python的则有很多,所以就加了一个Python项目,虽然就1个脚本。

一、几个步骤:

  首先要模拟登录,登录完了进入简历采集,然后模拟下载,下载完了以后就可以看到求职者的电话了。

  这个电话号码是使用动态生成的Base64字体,所以直接提取文字是无法成功的。

  1、先将Base64转成Woff字体,这个可以用C#完成(这其中的iso-8859-1编码是个坑,一般用Default会出现惊喜):

            SetMainStatus("正在生成WOFF...");
byte[] fontBytes = Convert.FromBase64String(CurFont);
string fontStr = Encoding.GetEncoding("iso-8859-1").GetString(fontBytes).TrimEnd('\0');
StreamWriter sw2 = new StreamWriter(@"R58.woff", false, Encoding.GetEncoding("iso-8859-1"));
sw2.Write(fontStr);
sw2.Close();

  2、再将已经生成的Woff转成XML(WoffDec.exe是我用Python打包的Exe,其实有点小题大做了,为了这一个转化专门打了一个包,有时间还是整一个C#下面的好)

            //调用python exe 生成xml文件
ProcessStartInfo info = new ProcessStartInfo
{
FileName = "WoffDec.exe",
WindowStyle = ProcessWindowStyle.Hidden
};
Process.Start(info).WaitForExit();//在2秒内等待返回

整个WoffDec.py的代码就3行:

from fontTools.ttLib import TTFont
font = TTFont('R12.woff')
font.saveXML('R12.xml')

这个打包是有点意思的,先试了py2exe,不成功,换pyinstaller, 成了,连EXE一起有11M,也不是很大。

https://github.com/pyinstaller/pyinstaller 下载,或者在VS2017 Python环境下搜索PyInstaller直接安装。

右键使用“打开此处的命令提示符”;输入pyinstaller /path/to/yourscript.py即可打包成一个exe文件。在Winform应用调用时,应该整个文件夹都拷贝过去。

  3、XML文件有了以后,以上面的Woff文件为基准准备为一个数据字典存储起来(这个地方有点绕,先找一个网站把Woff显示成文字和编码,然后根据编码在XML中查找它的字体定位点,我取的X和Y组成唯一值(X,Y就代表一个字),当然也可以取更多;

        internal static readonly Dictionary<string, string> DicChar = new Dictionary<string, string>()
{
{"91,744","" },
{"570,0",""},
{"853,1143","" },
{"143,259","" },
。。。。。。
};

  4、上面这一步是要花点时间的,基准字典有了以后,就可以按每次生成的XML文件来进行匹配真实文字了。

  5、真实文字取出后面的就简单了,直接采集到数据库,再连上短信发送业务,就可以自动群发了。

二、使用场景

  上班后开启采集服务即不用再理会,由系统每间隔一段时间自动下载简历,并自动推送面试邀请短信。只要有新人发布对口的求职信息,系统就会马上给他发送邀请,实为抢人利器。

BTW:网页模拟操作使用的CEFSharp将另开一章。

利用C# CefSharp Python采集某网站简历并自动发送邀请短信的更多相关文章

  1. 如何利用 LTE/4G 伪基站+GSM 中间人攻击攻破所有短信验证

    这次公开课请来的嘉宾对自己的简介是: 连续创业失败的创业导师:伪天使投资人:某非知名私立大学创办人兼校长:业余时间在本校通信安全实验室打杂. 自从他在黑客大会上演讲<伪基站高级利用技术——彻底攻 ...

  2. 基于日志服务的GrowthHacking(1):数据埋点和采集(APP、Web、邮件、短信、二维码埋点技术)

    数据质量决定运营分析的质量 在上文中,我们介绍了GrowthHacking的整体架构,其中数据采集是整个数据分析的基础,只有有了数据,才能进行有价值的分析:只有高质量的数据,才能驱动高质量的运营分析. ...

  3. 利用短信通知的方式在Tasker中实现收到Android手机短信自动转发到邮箱

    利用短信的通知实现短信内容转发到微信 code[class*="language-"] { padding: .1em; border-radius: .3em; white-sp ...

  4. 谁说程序员不懂浪漫?用Python每天自动给女朋友免费发短信

    前言 之前发过一篇文章,用 Python 制作的给父母天气预报提醒的小工具天气变冷了,给父母制作一个天气提醒小助手,这篇文章我同步到博客上之后,有读者在评论区留言,对于部分微信没有网页版接口,导致无法 ...

  5. python 阿里云短信群发推送

    本篇文章是使用Python的Web框架Django提供发送短信接口供前端调用,Python版本2.7 阿里云入驻.申请短信服务.创建应用和模板等步骤请参考:阿里云短信服务入门 1.下载sdk 阿里云短 ...

  6. Python实现阿里云短信推送

    本篇文章是使用Python的Web框架Django提供发送短信接口供前端调用,Python版本2.7 阿里云入驻.申请短信服务.创建应用和模板等步骤请参考:阿里云短信服务入门 1.下载sdk 阿里云短 ...

  7. 用Python调用华为云API接口发短信

    [摘要] 用Python调用华为云API接口实现发短信,当然能给调用发短信接口前提条件是通过企业实名认证,而且有一个通过审核的短信签名,话不多说,showcode #!/usr/bin/python3 ...

  8. 利用WSGI来部署你的网站

    利用WSGI来部署你的网站 当需要部署你的django项目的时候,可以使用apache+python来部署访问你的网站. 由于网上的有关的都是老版本的.所以这里使用apache2.4和python3. ...

  9. 利用 NGINX 最大化 Python 性能,第二部分:负载均衡和监控

    [编者按]本文主要介绍 NGINX 的主要功能以及如何通过 Nginx 优化 Python 应用性能.本文系国内 ITOM 管理平台 OneAPM 编译呈现. 本文上一篇系: 利用 NGINX 最大化 ...

随机推荐

  1. LUA表与函数的深入理解

    local heroInfo = {} --直接打印 table的名字,就会输出该table的内存地址 print("表地址---------------",heroInfo) - ...

  2. python将url转换成二维码

    准备环境 python生成二维码,需要依赖包qrcode和PIL(二维码的实质就是一个url.) python3安装PIL:pip install PIL python2安装PIL:pip insta ...

  3. 九项重要的职业规划提示(转自W3School )

    1. 学习的步伐不停止 古人说,活到老,学到老.终身学习应该是您的座右铭. 世界在不断变化,每个人都在寻找各自的事业途径. 您只有保证了足够的技能储备,才能确保能够得到一份足够满意的工作. 为了保证您 ...

  4. IP地址工具类

    /// <summary> /// 获取客户端IP地址 /// </summary> /// <returns></returns> public st ...

  5. 【BZOJ3489】A simple rmq problem【kd树】

    题意 给出一个长度为n的序列,给出M个询问:在[l,r]之间找到一个在这个区间里只出现过一次的数,并且要求找的这个数尽可能大.如果找不到这样的数,则直接输出0.我会采取一些措施强制在线. 分析 预处理 ...

  6. golang之包和锁的机制

    互斥锁 同一时刻只有一个携程在操作 package main import ( "fmt" "math/rand" "sync" " ...

  7. MySQL 系列(三)事务

    MySQL 系列(三)事务 一组要么同时执行成功,要么同时执行失败的 SQL 语句.是数据库操作的一个执行单元! 事务开始于: 连接到数据库上,并执行条 DML 语句(INSERT. UPDATE 或 ...

  8. 文字如何实现完美UI?文本排版设计告诉你

    一部手机,电量充足,网络通畅,就足以让我们打发一天的时光,尽情沉浸在手机时代的缤纷世界里.这个信息资源无穷尽的手机网络世界,是设计师和开发者们在不停的探索中一路一步精心打造.如何进一步美化这个世界,优 ...

  9. Python打开文件open()的注意事项

    刚刚用open(fileName)来打开txt格式的文件,总是出现错误,总是找不到文件读取的内容,后来才发现是open()在使用过程中自动关闭了.这里介绍另种方法解决这个问题. 第一种方法. with ...

  10. 【转】简说GNU, GCC and MinGW (Lu Hongling)

    原地址:https://my.oschina.net/u/588967/blog/73478 GNU, GCC, MinGW是开源社区常常要遇到的概念. 网上一般的解释比较繁琐, 让人如坠云雾. 本文 ...