学校入学の電気通信ネットワーク、オンライン学位検証

免責事項:爬虫類は、不確実性の形で実現されているので、このブログは、市販の電気通信ネットワークのために行われた場合、適用される法律に違反している、手紙を学ぶ、自分自身の学習を参照してください、純粋に技術的な学習で、ウェブサイト:https://www.chsi.com.cn /

 

 

1. [追加の依存

外部依存関係はjsoup、taip、fastjsonを持っています。

;解析HTML用jsoupで利用可能なAI、クラウドコードのtaipテンセント非公式API Javaパッケージ:https://gitee.com/xshuai/taipは、OCRのか特定するため、画像データの一部ので、OCRを実行する必要がこれはテンセントOCR認識率と、このデータの関連する部分の信頼性を得ることができる。FASTJSONのJSONは、文字列を解析するために使用されます。

<依存>
    <groupIdを> org.jsoup </ groupIdを>
    <たartifactId> jsoup </たartifactId>
    <バージョン> 1.12.1 </バージョン>
</依存関係>

<依存>
    <groupIdを> cn.xsshome </ groupIdを>
    <たartifactId> taip </たartifactId>
    <バージョン> 4.3.5 </バージョン>
</依存関係>

<! - 依存Fastjson  - >
<依存>
    <groupIdを> com.alibaba </ groupIdを>
    <たartifactId> fastjson </たartifactId>
    <バージョン> 1.2.58 </バージョン>
</依存関係>

 

2.コードに従ってオンライン学習、通信ネットワークを取得したHTML

このセクションでは、RestTemplateを取得するために使用されます

パブリック 静的StuInfo parseURLを(文字列Vcode){
    テンプレート残留レストテンプレート = 新しい休憩テンプレート();
    文字列のURL = "https://www.chsi.com.cn/xlcx/bg.do?vcode=" + vcode + "&SRCID = bgcx" ;
    文字列HTML = restTemplate.getForObject(URL、文字列。クラス);
    リターンparseHtml(HTML)。
}

GETのこの部分はHTMLで、vcodeが学校することができ、それが教育を受けることができ

 

3.学校教育と情報分析

対応学校や教育vcodeしか解決することができます

/ **
 *例外のキャプチャ動作を追加することをお勧めします、
 *これは爬虫類を取得する方法があり、ページの変更後は、非ヌルチェックの分析部分は、あなたが例外をスローすることはありません
 * / 
プライベート 静的StuInfo parseHtml(文字列strHtml){
    文書DOC = Jsoup.parse(strHtml、 "UTF-8" )。
    要素eleDiv2 = doc.getElementsByClass( "tableTitle" )。
    もし(eleDiv2.text()( "学历"を含む。)){
         リターンparseXueLi(strHtml)。
    } 他の 場合には(。eleDiv2.text()が含まれている( "学籍" )){
         リターンparseXueJi(strHtml)。
    }
    リターン ヌル
}

ロール分析:

/ **
 *解析学校
 * / 
プライベート 静的StuInfo parseXueJi(文字列strHtml){
    文書DOC = Jsoup.parse(strHtml、 "UTF-8" )。
    要素eleDiv2 = doc.getElementsByClass( "DIV2" )。
    もし(eleDiv2!= nullの &&!eleDiv2.isEmpty()){
        要素eleTd = eleDiv2.get(0).getElementsByTag( "TD" )。
        もし(eleTd!= nullの &&!eleTd.isEmpty()){
            StuInfo StuInfo = 新新StuInfo();
             // 名前は、OCR認識を達成するために、画像、テンセントのAPI呼び出しで 
            文字列nameImg = eleTd.get(1).getElementsByTag( "IMG")GET(0).ATTR( "SRC"を)。
            stuInfo.setName(aiOcr(nameImg))。
            stuInfo.setGender(eleTd.get( 4 )の.text())。
            stuInfo.setIdCard(eleTd.get( 6 )の.text())。
            stuInfo.setNation(eleTd.get( 8 )の.text())。
            stuInfo.setBirthDay(eleTd.get( 10 )の.text())。
            stuInfo.setUniversity(eleTd.get( 12 )の.text())。
            stuInfo.setLevel(eleTd.get( 14 )の.text())。
            stuInfo.setDepartment(eleTd.get( 16 )の.text())。
            stuInfo.setSClass(eleTd.get( 18 )の.text())。
            stuInfo.setDomain(eleTd.get( 20 )の.text())。
            stuInfo.setStuNum(eleTd.get( 22 )の.text())。
            stuInfo.setForm(eleTd.get( 24 )の.text())。
            stuInfo.setEntranceDate(eleTd.get( 26 )の.text())。
            (eleTd.get(stuInfo.setLenOfSchooling 28 )の.textを())。
            stuInfo.setType(eleTd.get( 30 )の.text())。
            文字列[]ステータス = eleTd.get(32)の.text()スプリット( "\\("。 )。
            stuInfo.setStatus(ステータス[ 0 ])。
            stuInfo.setGraduationDate(ステータス[ 1] .substring(0、ステータス[1] .LENGTH() - 1 ))。
            返すstuInfoを。
        }
    }
    リターン ヌル
}

教育分析:

/ **
     *教育は解決しました
     * / 
    プライベート 静的StuInfo parseXueLi(文字列strHtml){
        文書DOC = Jsoup.parse(strHtml、 "UTF-8" )。
        要素eleDiv2 = doc.getElementsByClass( "DIV2" )。
        もし(eleDiv2!= nullの &&!eleDiv2.isEmpty()){
            要素eleTd = eleDiv2.get(0).getElementsByTag( "TD" )。
            もし(eleTd!= nullの &&!eleTd.isEmpty()){
                StuInfo StuInfo = 新新StuInfo();
                 // 名前は、OCR認識を達成するために、画像、テンセントのAPI呼び出しで 
                文字列nameImg = eleTd.get(0).getElementsByTag( "IMG")GET(0).ATTR( "SRC"を)。
                stuInfo.setName(aiOcr(nameImg))。
                stuInfo.setGender(eleTd.get( 2 )の.text())。
                stuInfo.setBirthDay(eleTd.get( 3 )の.text())。
                stuInfo.setEntranceDate(eleTd.get( 4 )の.text())。
                stuInfo.setGraduationDate(eleTd.get( 5 )の.text())。
                stuInfo.setType(eleTd.get( 6 )の.text())。
                stuInfo.setLevel(eleTd.get( 7 )の.text())。
                stuInfo.setUniversity(eleTd.get( 8 )の.text())。
                stuInfo.setLenOfSchooling(eleTd.get( 9 )の.text())。
                stuInfo.setDomain(eleTd.get( 10 )の.text())。
                stuInfo.setForm(eleTd.get( 11 )の.text())。
                stuInfo.setCertificateNum(eleTd.get( 12 )は.text());
                 // ステータスは絵で、テンセントAPIは、OCR認識を達成するために呼び出して 
                文字列statusImg = eleTd.get(13).getElementsByTag (0)を取得( "IMG").. ATTR( "SRC" )。
                stuInfo.setStatus(aiOcr(statusImg))。
                stuInfo.setPresident(eleTd.get( 14 )の.text())。
                返すstuInfoを。
            }
        }
        リターン ヌル
    }

注:このコードの一部は、第一の可能な例外を防止するために、再取得の値をチェックする必要があり、一般的に空でなく、非エンプティチェックするために添加されていません。ここでは単に個人的な娯楽、注文コードはとても州のこの部分を読みやすいです。

学校教育とのデータの一部が再び絵に解析され、あなたが認識OCRを得るために行う必要があり、aiOcr()関数は、OCR識別を行うために言いたいことが次のステップです。

特定のページが変更された場合、対応する必要性は、ページの変化を解析するために応じて調整することができます。

 

4.画像取得

画像内のOCR認識は、テンセント情報、依存taipクライアント・インタフェースと呼ばれます。:taipインターフェースは非常に強い、興味缶遊びですが、AIテンセントオープンプラットフォームを登録する必要があり、航空券テンセントAIのすべての機能が含まれていますhttps://ai.qq.com/product/nlpchat.shtml

/ **
 *この場所は数回呼び出す必要があり、テンセントは、OCR時々システムがビジー状態の報告、正しい結果を毎回返さない、後ほど再度お試しください
 * / 
プライベート 静的文字aiOcr(文字列imgUrl){
    文字列のURL = "https://www.chsi.com.cn" + imgUrl。
    TAipOcr aipOcr = 新しいTAipOcr(APP_ID、APP_KEY)。
    してみてください{
        結果のString = aipOcr.handWritingOcrByUrl(URL);
         // FASTJSONが解決することができるときにエラー 
        OcrResult ocrResult = JSONObject.parseObject(結果、OcrResult。クラス);
         リターン ocrResult.getData()getItem_list()GET(0 .. ).GetItemstring ();
    } キャッチ(例外e){
        System.out.println( "エラー認識OCR" );
         リターン "" ;
    }
}

この場所を例外処理ロジックも補完される必要があり、相補的であるようには至っていません。

 

完全なコード:https://gitee.com/betterwgo/chsi_api

 

 


 

 

 

  

 

おすすめ

転載: www.cnblogs.com/betterwgo/p/11918711.html
おすすめ