利用C# CefSharp Python采集某网站简历并手动发送约请邮件

优采云 发布时间: 2020-08-10 20:05

  以往爬虫没怎样研究过,最近有个需求,要从某网站采集敏感信息,稍稍考虑了一下,决定借助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(2000);//在2秒内等待返回

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

  from fontTools.ttLib import TTFont

font = TTFont('R12.woff')

font.saveXML('R12.xml')

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

  下载,或者在VS2017 Python环境下搜索PyInstaller直接安装。

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

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

   internal static readonly Dictionary DicChar = new Dictionary()

{

{"91,744","0" },

{"570,0","1"},

{"853,1143","2" },

{"143,259","3" },

。。。。。。

};

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

  5、真实文字取出旁边的就简单了,直接采集到数据库,再连上邮件发送业务,就可以手动群发了。

  二、使用场景

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

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

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线