爬虫Winform和Python的解决方法--就加Python项目

优采云 发布时间: 2021-08-10 05:17

  爬虫Winform和Python的解决方法--就加Python项目

  前言

  我过去没有对爬虫做过太多研究。最近需要从某个网站采集获取敏感信息。经过一番考虑,我决定使用C#Winform和Python来解决这个事件。

  整个方案并不复杂:C#写WinForm表单,进行数据分析和采集,Python本来不想用的,突然没找到C#下Woff字体转Xml的解决方案,但是网上有很多Python程序。所以我添加了一个 Python 项目,虽然只有 1 个脚本。

  

  一、几个步骤:

  首先,您必须模拟登录。登录后输入resume采集,然后模拟下载。下载后可以看到求职者的电话。

  此电话号码使用动态生成的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# OK)

  

//调用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 文件的数据字典。在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、提取真实文本很简单,直接采集到数据库,然后连接短信发送服务,就可以自动发送群消息了。

  二、使用场景

  下班后开启采集服务时,您无需担心。系统会定时自动下载简历,自动推送面试邀请短信。只要有新人发布相应的求职信息,系统就会立即向他发出邀请,真是抢人的利器。

  顺便说一句:用于网页模拟操作的CEFSharp将另开一章。

  总结

  以上就是这个文章的全部内容。希望本文的内容对大家的学习或工作有一定的参考价值。感谢您的支持。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线