前言
以往爬蟲沒怎么研究過,最近有個需求,要從某網(wǎng)站采集敏感信息,稍稍考慮了一下,決定利用C# Winform和Python一起來解決這個事件。
整個解決方案不復(fù)雜:C#編寫WinForm窗體,進(jìn)行數(shù)據(jù)分析和采集, Python本來不想用的,一下子沒找到C#下Woff字體轉(zhuǎn)Xml的方案,而網(wǎng)上Python的則有很多,所以就加了一個Python項目,雖然就1個腳本。
一、幾個步驟:
首先要模擬登錄,登錄完了進(jìn)入簡歷采集,然后模擬下載,下載完了以后就可以看到求職者的電話了。
這個電話號碼是使用動態(tài)生成的Base64字體,所以直接提取文字是無法成功的。
1、先將Base64轉(zhuǎn)成Woff字體,這個可以用C#完成(這其中的iso-8859-1編碼是個坑,一般用Default會出現(xiàn)驚喜):
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、再將已經(jīng)生成的Woff轉(zhuǎn)成XML(WoffDec.exe是我用Python打包的Exe,其實有點小題大做了,為了這一個轉(zhuǎn)化專門打了一個包,有時間還是整一個C#下面的好)
//調(diào)用python exe 生成xml文件 ProcessStartInfo info = new ProcessStartInfo { FileName = "WoffDec.exe", WindowStyle = ProcessWindowStyle.Hidden }; Process.Start(info).WaitForExit(2000);//在2秒內(nèi)等待返回
整個WoffDec.py的代碼就3行:
from fontTools.ttLib import TTFontfont = TTFont('R12.woff')font.saveXML('R12.xml')
這個打包是有點意思的,先試了py2exe,不成功,換pyinstaller, 成了,連EXE一起有11M,也不是很大。
https://github.com/pyinstaller/pyinstaller 下載 或者 本地下載 ,或者在VS2017 Python環(huán)境下搜索PyInstaller直接安裝。
右鍵使用“打開此處的命令提示符”;輸入pyinstaller /path/to/yourscript.py
即可打包成一個exe文件。在Winform應(yīng)用調(diào)用時,應(yīng)該整個文件夾都拷貝過去。
3、XML文件有了以后,以上面的Woff文件為基準(zhǔn)準(zhǔn)備為一個數(shù)據(jù)字典存儲起來(這個地方有點繞,先找一個網(wǎng)站把Woff顯示成文字和編碼,然后根據(jù)編碼在XML中查找它的字體定位點,我取的X和Y組成唯一值(X,Y就代表一個字),當(dāng)然也可以取更多;
internal static readonly Dictionary<string, string> DicChar = new Dictionary<string, string>() { {"91,744","0" }, {"570,0","1"}, {"853,1143","2" }, {"143,259","3" }, 。。。。。。 };
4、上面這一步是要花點時間的,基準(zhǔn)字典有了以后,就可以按每次生成的XML文件來進(jìn)行匹配真實文字了。
5、真實文字取出后面的就簡單了,直接采集到數(shù)據(jù)庫,再連上短信發(fā)送業(yè)務(wù),就可以自動群發(fā)了。
二、使用場景
上班后開啟采集服務(wù)即不用再理會,由系統(tǒng)每間隔一段時間自動下載簡歷,并自動推送面試邀請短信。只要有新人發(fā)布對口的求職信息,系統(tǒng)就會馬上給他發(fā)送邀請,實為搶人利器。
BTW:網(wǎng)頁模擬操作使用的CEFSharp將另開一章。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對VEVB武林網(wǎng)的支持。
新聞熱點
疑難解答