使用C# CefSharp Python采集某网站简历并且自动发送邀请短信的方法

作者:ROTA 时间:2023-11-17 14:09:34 

前言

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

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

使用C# CefSharp 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,也不是很大。

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","0" },
  {"570,0","1"},
  {"853,1143","2" },
  {"143,259","3" },
  。。。。。。
 };

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

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

二、使用场景

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

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

来源:https://www.cnblogs.com/imes/p/10452212.html

标签:c#,cefsharp,采集
0
投稿

猜你喜欢

  • 解决C#中WebBrowser的DocumentCompleted事件不执行的实现方法

    2021-07-07 22:59:06
  • hibernate-validator如何使用校验框架

    2023-05-25 07:26:29
  • Android6.0 消息机制原理解析

    2023-08-06 12:19:44
  • android实现文件下载功能

    2022-07-29 18:03:10
  • 冒泡排序算法原理及JAVA实现代码

    2022-08-13 10:30:40
  • Android代码检查规则Lint的自定义与应用详解

    2021-11-04 22:13:43
  • c#创建圆形类Circle、矩形类实现代码

    2023-08-18 19:59:12
  • C#使用struct类型作为泛型Dictionary<TKey,TValue>的键

    2023-10-09 01:53:35
  • Spring Bean实例的创建及构造器的挑选

    2021-08-02 09:35:57
  • java根据List内对象的属性排序方法

    2022-10-25 10:05:44
  • springboot 防止重复请求防止重复点击的操作

    2021-09-19 16:03:00
  • Spring Boot与Kotlin 整合全文搜索引擎Elasticsearch的示例代码

    2023-03-18 11:57:58
  • Java设计模式之桥接模式

    2021-08-31 05:56:02
  • Java使用Tess4J实现图像识别方式

    2022-10-07 19:24:11
  • SpringBoot自动装配原理小结

    2023-11-18 16:54:06
  • Mybatis动态SQL foreach标签用法实例

    2023-12-25 07:42:46
  • Android 安全加密:消息摘要Message Digest详解

    2021-09-22 05:52:45
  • 详解Android 中的文件存储

    2023-12-21 17:44:44
  • springboot-jta-atomikos多数据源事务管理实现

    2022-08-29 19:45:47
  • 关于Java中HashCode方法的深入理解

    2022-05-28 03:29:33
  • asp之家 软件编程 m.aspxhome.com