自动采集编写(爬虫Winform和Python的解决方法--就加Python项目)
优采云 发布时间: 2021-11-20 07:06自动采集编写(爬虫Winform和Python的解决方法--就加Python项目)
前言
爬虫过去没有研究太多。最近需要从一些网站采集那里获取敏感信息。经过一番考虑,我决定使用C#Winform和Python来解决这个事件。
整个解决方案并不复杂:C#写WinForm表单,进行数据分析和采集,Python本来不想用的,但是没找到C#下Woff字体转Xml的解决方案,但是网上Python程序很多,所以就加了一个Python项目,虽然只有一个脚本。
一、几个步骤:
首先,您必须模拟登录。登录后输入简历采集,然后模拟下载。下载后,可以看到求职者的电话号码。
这个电话号码使用的是动态生成的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将开启新的篇章。
总结
以上就是本次文章的全部内容。希望本文内容对大家的学习或工作有一定的参考价值。感谢您对易宿云的支持。