2020幎9æ13æ¥ããã·ã¢ã§1åã®æ祚æ¥ãéå¬ãããŸãããäžéšã®å°åã§ã¯ãéå ã¯ãã¹ããŒãæ祚ãæŠç¥ã䜿çšããŠãããéå å¿åã®ææš©è ã¯ãåœå±ã®ä»£è¡šãæã¡è² ããå¯èœæ§ãæãé«ãåäžã®åè£è ã«æ祚ããŸãã
2幎é£ç¶ã§ãã¹ããŒãæ祚ãã®åè£è ãéžã¶éçšã§ããã®éææ§ãããŒãã«è°è«ã亀ããããŸãããããã«ãç§ã¯ãç¬ç«ããã¢ããªã¹ããçŽé¢ããå¯èœæ§ã®ããæŠç¥ãèŠçŽããããšã®é£ããã«å人çã«æ··ä¹±ããŠããŸããUMGã®äž»å¬è ã¯ãæŠç¥ã®è©³çŽ°ãªçµæãå ¬è¡šããŠããŸããããå°æ¹è°äŒã«åå ããéå åè£è ã®æ°ã瀺ãå³ã®ã¿ãå ¬è¡šããŠããŸãã
äžã®ãã¹ããŒãæ祚ãã®ãµã€ãããšãã°ãåžãå°åºãæå®ããŠãããµããŒããããŠããåè£ã®ãªã¹ããååŸããããšã¯ã§ããŸããã誰ãããã®å°åã®ããŒã¿ãåéãããå Žåã圌ã¯åå°åºã®äœæãéžæãããšããå調ãªäœæ¥ãããªããã°ãªããŸããã
UMG Webãµã€ãã®éçºè ãéé£ããããšã¯ãããŸãããæ祚æŠç¥ãå®è£ ããããã«ãå¿ èŠãªãã¹ãŠã®æ©èœãåãã£ãŠããŸãããããã2019幎ã«ã¯ãUMGã®çµæã«é¢ãã詳现ãªããŒã¿ã®åéãšå ¬éã«èª°ãé¢äžããŠããªãã£ãããïŒã¢ã¹ã¯ã¯ã®éžæ以å€ïŒããããã®éžæã§ã¯ãç§ãäž»å°æš©ãæ¡ãããšã«ããŸããã
çµæã¯ã次ã®ãããªèŠçŽããŒãã«ã§ãããã®èšäºã§ã¯ãç¹å®ã®ããŒã¿ã»ãããã©ã®ããã«ååŸãããããã¹ããŒãæ祚ãµã€ãããã³æ°ããCECWebãµãŒãã¹ããæ å ±ãã©ã®ããã«åéããããã«ã€ããŠèª¬æããŸãã
ã¹ããŒãæ祚ãµã€ã
ãŸããSmartVotingãµã€ãããæœåºã§ããããŒã¿ãèŠãŠã¿ãŸãããããµã€ãã®ã¡ã€ã³ããŒãžã«ã¯ããŠãŒã¶ãŒã®ç»é²ã¢ãã¬ã¹ãå ¥åããããã®ãã£ãŒã«ãããããŸããæååãå ¥åãããšãææ¡ãããã¢ãã¬ã¹ã®ãªã¹ãã次ã®åœ¢åŒã§è¡šç€ºãããŸãã
ææ¡ãããã¢ãã¬ã¹ã®1ã€ãéžæãããšãéžæããã¢ãã¬ã¹ãæ·»ä»ãããŠããããŒãªã³ã°ã¹ããŒã·ã§ã³ã®ããŒãžã«ç§»åããŸãã
ãã®ããŒãžã«ã¯ããã®å°åã§è¡ãããéžæãã£ã³ããŒã³ãäžèŠ§è¡šç€ºãããŸãããã£ã³ããŒã³ããšã«ãæ祚ãææ¡ãããåè£è /å察è ã®ãªã¹ãããããŸãã
ãã®å ŽåãUMGãéå åè£ã瀺ããªãã£ãç¥äºã®éžæãèŠãããŸããããã¯ãç¥äºã®éžæã2åã®ã©ãŠã³ãã§è¡ãããæ祚è ãæåã®ã©ãŠã³ãã§ã©ã¡ãã®éå åè£ã«æ祚ãããã¯åé¡ã§ã¯ãªããšããäºå®ã«ãããã®ã§ãã
ãŸããäžåºŠã«3人ã®åè£è ãåºãŠãåžè°äŒã®éžæã§æ祚ããããã«ææ¡ãããŠããŸããããã¯ããœãã§ã®éžæã«ã¯è€æ°ã®ã¡ã³ããŒãããªãæ§æå¡ããããšããäºå®ã«ãããã®ã§ãã
ä»å¹ŽUMGã«é¢äžããä»ã®ãã¹ãŠã®éžæãã£ã³ããŒã³ã§ã¯ãåäžã¡ã³ããŒã®æ§æå¡ããããŸããã§ããã
ããŒãžã³ãŒããèŠãŠã説æãããŠãããã¹ãŠã®ããŒã¿ã䟿å©ãªJSON圢åŒã§åéãããŠããããšã確èªããŸããããid = "__NEXT_DATA__"ã®èŠçŽ å ãããŒãžã®æç»ã«äœ¿çšãããŸããããŒãªã³ã°ã¹ããŒã·ã§ã³ã察å¿ããéžæãã£ã³ããŒã³ãããã³åè£è ã«é¢ããæ å ±ããããŸãã
__NEXT_DATA__èŠçŽ ã®å
容
{
"props":{
"pageProps":{
"id":"440384",
"settings":{
"id":1,
"share_photo":"/ganimed-media/share_photo/smartvote_sharepic_1200x628.jpg",
"video_on_main_page":"https://youtu.be/w8gapDGwWMY",
"fake_mode":false,
"title_share":", ",
"text_share":" , â « ». â .",
"telegram_bot_link":"https://tlinks.run/smartvotebot",
"viber_bot_link":"viber://public?id=smartvote",
"facebook_bot_link":"https://facebook.com/umnoegolosovanie/",
"alice_link":null,
"vk_bot_link":null
},
"serverData":{
"commission":{
"id":440384,
"number":"4317",
"address":"354340, , , , , 24",
"descr":" â 49 . .. ",
"lat":"43.425923",
"lon":"39.920152",
"region_id":26,
"region_intid":"135637827259064320000372513"
},
"campaigns":[
{
"id":26,
"code":"krasnodar-gub-2020",
"title":" ",
"is_regional":true,
"ready_date":null,
"district":{
"id":458,
"code":"oik-0",
"name":"0",
"leaflet":""
},
"candidates":[
{
"id":998,
"name":" ",
"share_image":"/elections-api-media/share/26/998.png",
"anticandidate":true,
"self_nominated":false,
"has_won":false,
"has_second_round":false,
"party":{
"title":" ",
"antiparty":true
}
}
]
},
{
"id":28,
"code":"krasnodar-sochi-gorduma-2020",
"title":" ",
"is_regional":false,
"ready_date":null,
"district":{
"id":526,
"code":"oik-2",
"name":"2",
"leaflet":"/elections-api-media/28/526-1334-1335-5385.pdf"
},
"candidates":[
{
"id":1334,
"name":" ",
"share_image":"/elections-api-media/share/28/1334.png",
"anticandidate":false,
"self_nominated":true,
"has_won":false,
"has_second_round":false,
"party":null
},
{
"id":1335,
"name":" ",
"share_image":"/elections-api-media/share/28/1335.png",
"anticandidate":false,
"self_nominated":true,
"has_won":false,
"has_second_round":false,
"party":null
},
{
"id":5385,
"name":" ",
"share_image":"/elections-api-media/share/28/5385.png",
"anticandidate":false,
"self_nominated":false,
"has_won":false,
"has_second_round":false,
"party":{
"title":"",
"antiparty":false
}
}
]
}
]
},
"error":null,
"currentUrl":"https://votesmart.appspot.com/candidates/440384"
}
},
"page":"/candidates/[id]",
"query":{
"id":"440384"
},
"buildId":"U8hjaoxZw8TINu-DU_Ixw",
"runtimeConfig":{
"HOST":"https://votesmart.appspot.com"
},
"isFallback":false,
"customServer":true,
"gip":true
}
ããŒãªã³ã°ã¹ããŒã·ã§ã³ã®å Žåã察å¿ããPECã®çªå·ïŒçªå·ïŒãšãã®èå¥åãUMGWebãµã€ãã®ããŒã¿ããŒã¹ã«è¡šç€ºãããŸããId = 440834ã¯ãããŒãžã®URLã«ããçªå·ïŒ/åè£/ 440834ïŒãšäžèŽããŸãã PECçªââå·ãšå°åãç¥ã£ãŠããã®ã§ãUMG Webãµã€ãã§ã³ããã·ã§ã³IDãèšç®ã§ããŸããïŒèå¥åãéåžžã«ç¡ç§©åºã«ååžããŠãããããæãããªäŸåé¢ä¿ãèŠã€ããããšãã§ããŸããã§ããïŒ SochiãPECïŒ4512-> id = 440834 SochiãPECïŒ4513-> id = 441403 SochiãPECïŒ4514-> id = 1781216 æ°åã®åå°ã®ãªã¹ããåéããæ¹æ³IDããŒãžã®PECïŒ 1ãã2,000,000ãŸã§ã®ãã¹ãŠã®çš®é¡ã®èå¥åãç¹°ãè¿ããŠãã§ãã¯ããã®ã¯éåžžã«éå¹çã«èãããŸããããããã®èå¥åã®ã»ãšãã©ã¯æ©èœããŠããŸããã
ãã ããäœæã®ãªã¹ããããã°ãé¢é£ããããŒãªã³ã°ã¹ããŒã·ã§ã³ã®ãªã¹ããæ¯èŒçç°¡åã«ãŸãšããããšãã§ããŸããåæç»é¢ã§æååãå ¥åãããšãé©åãªã¢ãã¬ã¹ã®ãªã¹ããã察å¿ããã³ããã·ã§ã³èå¥åãšãšãã«ãµãŒããŒããè¿ã
ããŸããã¢ãã¬ã¹ã§ãµã€ããæ€çŽ¢ãã
https://votesmart.appspot.com/api/v1/cik/addresses?query=ADDRESS
- ADDRESS-ã¢ãã¬ã¹ãã§ããã°ã件åãéœåžãéãã家ãã®åœ¢åŒã§ããµãŒããŒäžã®ããŒãµãŒã¯ããããããŸãåŠçããªãããããstreetãããdãããšããçç¥åœ¢ããªãããšãæãŸããã§ãã
ãªã¯ãšã¹ãã®äŸïŒhttpsïŒ
//votesmart.appspot.com/api/v1/cik/addressesïŒquery = Lenin's Smolensk
ã¯ãšãªçµæ
{
"suggestions":[
{
"value":" , , , ",
"data":{
"fullname":" , , , ",
"level":"7",
"region_id":69,
"commission_id":null,
"intid":"138474570115456000000347353",
"path":"135637827259064320000359815,135637827259064320000359819,135637827259064320000359820,138474570115456000000347353",
"snippet":" , <em></em>, , <em></em> ",
"score":118.84238
}
},
{
"value":" , , , , 12",
"data":{
"fullname":" , , , , 12",
"level":"8",
"region_id":69,
"commission_id":1124357,
"intid":"135659820348349440000359937",
"path":"135637827259064320000359815,135637827259064320000359819,135637827259064320000359822,135659820348349440000359708,135659820348349440000359937",
"snippet":" , <em></em>, , <em></em> , 12",
"score":115.14931
}
},
...
]
}
ãµã€ãããããŒã¿ãæœåºããããã®ã¢ãã¬ã¹ã®ãªã¹ãã¯ã©ãã§å ¥æã§ããŸããïŒåœå ã®ãã¹ãŠã®äœæã®ããŒã¿ããŒã¹ãåæããããšã¯ãå¹æã®ãªã解決çã®ããã§ããåé¡ã解決ããã«ã¯ãæ§æå¡ããšã«1ã€ã®äœæããå¿ èŠãªãããã§ãã
åæ§æå¡ã«ã¯ãå¹³åããŠ2ã8ã®å°åºããããŸããããŒãªã³ã°ã¹ããŒã·ã§ã³ã®ã¢ãã¬ã¹ãæå±ããæ§æå¡ãšäžèŽããªãå ŽåããããŸãããUMG Webãµã€ãã®PECã¢ãã¬ã¹ã調ã¹ãããšã§ãåæ§æå¡ã«é¢ããæ å ±ãåéã§ãããšãã仮説ãç«ãŠãŸãã
ãã®åŸããã®ä»®èª¬ã䜿çšããŠãã»ãŒãã¹ãŠã®æ§æå¡ã«é¢ããæ å ±ãåéããããšãã§ããŸãããéžæå§å¡äŒã®ããŒã¿ããŒã¹ã®äœæ圢åŒã¯ç°è³ªã§ããããã1100ã®æ§æå¡ã®ãã¡10ã®äœæã®ã¿ãæåã§éžæããå¿ èŠããããŸããã
ã€ã³ã¿ãŒãããã§ã¯ãå®æçã«æŽæ°ããããã·ã¢é£éŠã®éžæå§å¡äŒã®ããŒã¿ããŒã¹ãèŠã€ããããšãã§ããŸãããã®ããŒã¿ããŒã¹ã«ã¯ãäœæãPECã®æ§æã«é¢ããæ å ±ãå«ãŸããŠããŸããããããããŒã¿ã®é¢é£æ§ãšä¿¡é Œæ§ãé«ããããã«ïŒãŸããç¹å®ã®ãã£ãŒã«ãã®åœ¢åŒã«æºè¶³ã§ããªãã£ãããïŒãã¢ãã¬ã¹ã®ãªã¹ããèªåã§åéããããšã«ããŸãããããã¯ãCECWebãµã€ãã«å¿ èŠãªãã¹ãŠã®æ©èœãããããã§ãã
æ°ããCECWebãµãŒãã¹ãAPIã¡ãœãã
GASãVyboryãã¯1995幎ã«éçºãããèªåã·ã¹ãã ã§ããã·ã¢é£éŠã§ã®éžæãšã¬ãã¡ã¬ã³ãã ã®æºåãšå®æœãç®çãšããŠããŸãã
éžæãã£ã³ããŒã³ã®éçšã«èå³ãæã£ãããšãããå Žåã¯ããããããã®ãµã€ãã«åºããããããšã§ãããããã®ãµã€ãã§ã¯ãéžæçµæãæ¿èªãããåã§ãã£ãŠããæ祚æ°ãªã©ãGASãVyboryãã·ã¹ãã ããã®åºæ¬æ å ±ãå ¬éãã
ãŠããŸãã以åã®å Žåã¯ãéžæçµæãååŸããããã«ãããŒã¿ãã€ããŒãã®ãµã€ããå©çšããŠãæ²æ³æ¹æ£æ祚ã®æäžã«ãçªç¶ããµã€ãã«ãã£ããã£ãçŸããŸããã Captchaã¯éåžžã«æ°žç¶çã§ããããµã€ãã®åããŒãžã«ç§»åãããšè¡šç€ºãããŸãã
ããªãèªèº«ãèŠèŠçã«è©äŸ¡ã§ããããã«ãcaptchaã¯ãã¡ããéåžžã«åçŽã§ããã確ãã«èª°ãããããåé¿ããæ¹æ³ããã§ã«èŠã€ããŠããŸããæ©æ¢°åŠç¿ãè¡ã代ããã«ãCEC Webãµã€ãã®æ°ããã»ã¯ã·ã§ã³ã«ç®ãåããŸãããããã¯ããŸã ã»ãšãã©ç¥ãããŠããªããã®ã§ããããžã¿ã«ãµãŒãã¹
ãã®ã»ã¯ã·ã§ã³ã¯ãä¿®æ£ã®æ祚äžã«è¡šç€ºãããHTTPçµç±ã§ããã€ãã®WebãµãŒãã¹ãå«ãŸããŠããŸãããªã¯ãšã¹ãã¯å éšAPIãšéä¿¡ããŠãGASãVyboryãã·ã¹ãã ããããŒã¿ãåä¿¡ããŸãã HabrãŠãŒã¶ãŒã¯ãã§ã«ãã®æ©èœã«æ³šæãæã£ãŠããŸãããã£ãšè©³ããèããŠã¿ãŸãããã
以äžã¯ããã®ãããžã§ã¯ãã§äœ¿çšãããæ°ããAPIã®äž»ãªèŠæ±ã®èª¬æã§ãã
ã·ã¹ãã å ã®åããŒã¿æ§é ã«ã¯ãVRNããŒãå«ãŸããŠããŸãã-ãµã€ãããã£ã³ããŒã³ãå°åºãåè£è ãªã©ããªããžã§ã¯ãã®äžæã®èå¥åã
PECæ å ±
http://cikrf.ru/iservices/voter-services/committee/subjcode/SUBJECT_CODE/num/COMMITTEE_NUM
- SUBJECT_CODE - RFãµããžã§ã¯ãã³ãŒã
- COMMITTEE_NUM -PECçªå·
ãªã¯ãšã¹ãã®äŸïŒhttpïŒ
//cikrf.ru/iservices/voter-services/committee/subjcode/ 01 / num / 2
ã¯ãšãªçµæ
{
"vrn":"4014001117979",
"name":" â2",
"subjCode":"01",
"numKsa":"01T001",
"vid":"5",
"address":{
"address":"385200, , , , .., 16",
"descr":" â1",
"phone":"8-87772-9-23-72",
"lat":"44.882893",
"lon":"39.187187"
},
"votingAddress":{
"address":"385200, , , , .., 16",
"descr":" â1",
"phone":"8-87772-9-23-72",
"lat":"44.882893",
"lon":"39.187187"
}
}
ãµã€ãã§ã®éžæãã£ã³ããŒã³ã«é¢ããæ å ±
http://cikrf.ru/iservices/voter-services/vibory/committee/COMMITTEE_VRN
- COMMITTEE_VRN -PECèå¥å
ãªã¯ãšã¹ãã®äŸïŒ
httpïŒ//cikrf.ru/iservices/voter-services/vibory/committee/ 4544028162533
ã¯ãšãªçµæ
[
{
"vrn":"100100163596966",
"date":"2020-07-01",
"name":" ",
"subjCode":"0",
"pronetvd":null,
"vidvibref":"0"
},
{
"vrn":"25420001876696",
"date":"2020-09-13",
"name":" ",
"subjCode":"54",
"pronetvd":"0",
"vidvibref":"2"
},
{
"vrn":"4544220183446",
"date":"2020-09-13",
"name":" ",
"subjCode":"54",
"pronetvd":null,
"vidvibref":"2"
}
]
éžæåºã®ãªã¹ã
http://cikrf.ru/iservices/sgo-visual-rest/vibory/CAMPAIGN_VRN/tvd
- CAMPAIGN_VRN-ãã£ã³ããŒã³ID
ãªã¯ãšã¹ãã®äŸïŒ
httpïŒ//cikrf.ru/iservices/sgo-visual-rest/vibory/ 457422069597 / tvd
ã¯ãšãªçµæ
{
"_embedded":{
"tvdDtoList":[
{
"vrn":457422069601,
"namtvd":" ",
"namik":" ",
"numtvd":"0",
"vidtvd":"ROOT",
"_links":{
"results":{
"href":"http://cikrf.ru/iservices/sgo-visual-rest/vibory/457422069597/results/457422069601/proportion"
}
}
},
{
"vrn":457422069602,
"namik":" â 1",
"numtvd":"1",
"vidtvd":"OIK",
"_links":{
"results":{
"href":"http://cikrf.ru/iservices/sgo-visual-rest/vibory/457422069597/results/457422069602/major"
}
}
},
...
]
},
"_links":{
"self":{
"href":"http://cikrf.ru/iservices/sgo-visual-rest/vibory/457422069597/tvd"
}
}
}
NUMTVDã¯é¡çªå·ã§ãããã³ããŒãŒãã¯éåžžãåäžã®å°åºã®çµæã«è²¬ä»»ããããŸããããšãã°ãéžæãæ··åã·ã¹ãã ã®äžã§è¡ãããå ŽåãããŒãæ§æå¡ãã¯æ¯äŸã·ã¹ãã ã®äžã§æ祚ãã責任ããããŸããæ®ãã®æ§æå¡ã¯ãã·ã³ã°ã«ã¡ã³ããŒãŸãã¯ãã«ãã¡ã³ããŒã§ãã
ã芧ã®ãšãããããŒã¿æ§é ã«ã¯ãéžæçµæã確èªããããã«äœ¿çšã§ãããªã³ã¯ãå«ãŸããŠããŸãããªã³ã¯ã¯ãæ祚çµæãå ¬éãããåã§ãçæãããŸãã
éžæéåã«åå ããåè£è ã®ãªã¹ã
http://cikrf.ru/iservices/sgo-visual-rest/vibory/CAMPAIGN_VRN/candidates/?page=PAGE_NUM&numokr=NUMTVD
- CAMPAIGN_VRN-ãã£ã³ããŒã³ID
- PAGE_NUM-ãªã¹ãããŒãžçªå·
- NUMTVD-é¡çªå·ïŒãªãã·ã§ã³ïŒ
ãªã¯ãšã¹ãã®äŸïŒ
httpïŒ//cikrf.ru/iservices/sgo-visual-rest/vibory/ 4674220125616 /åè£è /ïŒããŒãž= 1ïŒnumokr = 11
ã¯ãšãªçµæ
{
"_embedded":{
"candidateDtoList":[
...
{
"index":50,
"vrn":4674020270868,
"fio":" ",
"datroj":"23.04.1964 00:00:00",
"vidvig":"",
"registr":"",
"vrnio":4674220132098,
"namio":" \" \" ",
"numokr":11,
"tekstat2":"1",
"_links":{
"self":{
"href":"http://cikrf.ru/iservices/sgo-visual-rest/vibory/4674220125616/candidates/4674020270868"
}
}
},
{
"index":56,
"vrn":4674020269642,
"fio":" ",
"datroj":"15.02.1986 00:00:00",
"vidvig":"",
"registr":" ",
"namio":"",
"numokr":11,
"tekstat2":"1",
"_links":{
"self":{
"href":"http://cikrf.ru/iservices/sgo-visual-rest/vibory/4674220125616/candidates/4674020269642"
}
}
},
{
"index":105,
"vrn":4674020271181,
"fio":" ",
"datroj":"15.07.1994 00:00:00",
"vidvig":"",
"registr":"",
"vrnio":4674220134054,
"namio":" \" \"",
"numokr":11,
"tekstat2":"1",
"_links":{
"self":{
"href":"http://cikrf.ru/iservices/sgo-visual-rest/vibory/4674220125616/candidates/4674020271181"
}
}
},
...
]
},
"_links":{
"self":{
"href":"http://cikrf.ru/iservices/sgo-visual-rest/vibory/4674220125616/candidates?page=1&numokr=11"
}
},
"page":{
"size":20,
"totalElements":9,
"totalPages":1,
"number":1
}
}
ããŒãž æ§é ã«ã¯ããŒãžã®ç·æ°ãå«ãŸããŠãããæåŸã®ããŒãžã«å°éãããšãïŒãŸãã¯ãµãŒããŒããè¿ããã空ã®ãªã¹ãã«ãã£ãŠïŒãå€å¥ããããã«äœ¿çšã§ããŸãã
APIã«ã¯ãäž»ã«éžæ/åè£è ã«é¢ãã詳现æ å ±ãèŠã€ããããã®ä»ã®ã¡ãœãããå«ãŸããŠããŸããå¿ èŠã«å¿ããŠãå¿ èŠãªãªã¯ãšã¹ããç°¡åã«è¿œè·¡ã§ããŸããããã§ãããŒã¿ã®ã¢ããããŒããéå§ã§ããŸãã
CECWebãµã€ãããããŒã¿ãããŠã³ããŒããã
å¿ èŠãªããŒã¿ã®ããŠã³ããŒããéå§ããåã«ããããžã§ã¯ãã§äœ¿çšããéžæãã£ã³ããŒã³ã®ãªã¹ããäœæããå¿ èŠããããŸãããäºå®ããã¹ããŒãæ祚ãã¯ã©ãã§ãè¡ãããã®ã§ã¯ãªããéžæã§è¡ãããŸããã
â ,
â ,
â ( 200 )
( 4 ).
//
ãããã®ããŒã¿ã®éèŠæ§ããªããããç§ã¯å·ã®å ¬çµãžã®å¯éžæãç¡èŠããããšã«ããŸãããéžææ¥ã®ãŠã£ãããã£ã¢ã®èšäºã¯ã倧éœåžã§ã®éžæããªã¹ãããã ããªã®ã§ãå°æ¹è°äŒãžã®éžæã®ãªã¹ãããŸãšããã®ã«åœ¹ç«ã¡ãŸããã
å人ïŒå¿ èŠãªæäœæ¥ãè¡ãããšã§ãã®ãããžã§ã¯ãã®å®è£ ãæäŒã£ãŠãããïŒã«ç®ãåãããšãå€å žçãªCEC Webãµã€ãã®ã¡ã€ã³ããŒãžãããããããã®éžæãã£ã³ããŒã³ã®URLã®ãªã¹ããäœæããããã«äŸé ŒããŸãããå®éã®ãšãããURLã«ã¯ãããã«è§£æããããã«å¿ èŠãªå°åãšãã£ã³ããŒã³ã®èå¥åãå«ãŸããŠããŸãã
vybory.izbirkom.ru/region/izbirkom?action=show&vrn=21120001136916&
region=11&prver=1&pronetvd=1
ãã®çµæããªã¹ãã¯43ã®éžæãã£ã³ããŒã³ã§æ§æãããŸãããåèšã§ã9000以äžã®åå¥ã®éžæãã£ã³ããŒã³ããããŸããŸãªã¬ãã«ã®å£äœã«å¯ŸããŠåäžéžææ¥ã«éå¬ãããŸããã
ããã§ãéžæè¢ã®ãªã¹ããšåè¿°ã®APIã¡ãœãããæå ã«ããã®ã§ãããŒã¿ãç°¡åã«ããŠã³ããŒãã§ããŸãããpythonã¹ã¯ãªãããäœæããrequestsã¢ãžã¥ãŒã«ã䜿çšããŠå®æçã«ãªã¯ãšã¹ããè¡ã£ãåŸãåè£è ãšããŒãªã³ã°ã¹ããŒã·ã§ã³ã«é¢ããããŒã¿ãå ã®JSON圢åŒã§ä¿åããŸããã
ããŒãªã³ã°ã¹ããŒã·ã§ã³ã«é¢ããæ å ±ãããŠã³ããŒãããéã«èæ ®ãã¹ãäž»ãªããšïŒãµãŒããŒã空ã®å€ãè¿ããŸã§ã1ããå§ãŸããã¹ãŠã®å¯èœãªæ°å€ã調ã¹ãã ãã§ã¯ååã§ã¯ãããŸãããå®éã«ã¯ããªãŒãžã§ã³å ã®PECã®çªå·ä»ãã¯äžæãããå¯èœæ§ããããããšãã°ã次ã®åœ¢åŒã«ãªããŸã
ã...ïŒ1001-ïŒ1016ãïŒ1101-ïŒ1136ã1138 .. ..
ãŸãã¯ïŒ
ïŒ0-ïŒ700ãïŒ900-ïŒ1002ã1004 ...
ãªãŒãžã§ã³å ã®æ倧PECçªå·ã決å®ããäžèŠãªèŠæ±ãè¡ããªãããã«ããããã«ã次ã®ããã«ããŒã¿ãåéããŸãããæåã®1000çªå·ã®ããŒã¿ãã¢ããããŒãããŠãããiãã©ããã確èªããŸããã+ 1ãi + 5ãi + 100ãi + 500ãi + 1000ã®çªå·ã¯ãä»»æã®PECã«å¯Ÿå¿ããŸãïŒãã®å ŽåãããŠã³ããŒããç¶è¡ããŸãïŒã
ãŸããå¢å ã®ããŒã¿ãããŠã³ããŒãããPECçªå·ãä¿æããããšããå§ãããŸããäºå®ãè¿ãããããŒã¿ã«ã¯PECçªå·ã¯å«ãŸããŠããŸãããããéžæåºéžæå§å¡äŒç¬¬100å·ããšãã圢åŒã®ååã®ã¿ãå«ãŸããŠããŸããåŸã§å¯ŸåŠããªããã°ãªããªãã£ãå ã®PECçªå·ãååŸããããã»ã¹ã¯ãçæçãªãã°ãšãã©ã¹ãã¬ãŒã·ã§ã³ã«ã€ãªãããŸãããçµå±ã®ãšãããäžéšã®å°åã®PECã®ååã®çªå·ä»ãã¯ãç°ãªã圢åŒã«ãªã£ãŠããŸãã
ããšãã°ãUdmurtiaã§ã¯ãPECã®ååã«ã¯æ¬¡ã®çªå·ãä»ããããŠããŸããïŒãâ1/ 01ãâ1/ 02ãâ1/ 03ãããªããã¯å°åã§ã¯ãâ01-01ãâ01-02ãâ01-03ãããªã¬ã³ãã«ã¯å°åã§ãç§ã¯æ¬åœã«ãšããŸããã¯ãªãã®ã«åºããããŸãããããã¯ãå€ãã®éžæå§å¡äŒã誰ãã«ã¡ãªãã§åä»ããããå¯äžã®å°åã§ãããããšãã°ãããã¹ããããå åŒãã«ã¡ãªãã§åä»ããããéžæåºéžæå§å¡äŒç¬¬1696å·
ãã¹ããŒãæ祚ãã®ãµã€ãããããŒã¿ãããŠã³ããŒããã
次ã«ãåéãããPECã¢ãã¬ã¹ããšã«ãUMGWebãµã€ãããæ祚ããŒã¿ãããŠã³ããŒãããŸãããã®åã«ãããã€ãã®æ©èœãæ€èšãã䟡å€ããããŸãïŒããã»ã¹ã§åŠç¿ããŸããïŒã
ãŸããCECããŒã¿ããŒã¹ã®ã¢ãã¬ã¹ã®åœ¢åŒãç°ãªãããšãèæ ®ããå¿ èŠããããŸããããã¯ãå°åã®ç¹å®ã®å°åã§ãããå¯èœã§ãã ãSmartVotingãã®ãµã€ãã§ã¯ããã®ãããªã¯ãšãªã®ã¢ãã¬ã¹æ€çŽ¢ã«ãŸã£ãã察å¿ã§ããªãã£ãããããdããããGããããstãããšããç¥èªãåé€ããå¿ èŠããããŸããããŸããäœæããéµäŸ¿çªå·ãåé€ããããšããå§ãããŸãããŸããæã ééããæ¥é èŸããã·ã¢é£éŠããåé€ããããšããå§ãããŸãã
次ã«ãUMG Webãµã€ãã¯DDoSæ»æã«å¯ŸããŠåŒ·åãªä¿è·ãåããŠããã0.3ç§ééã§100件ã®ãªã¯ãšã¹ããè¡ã£ãå Žåã§ããIPã¯çŠæ¢ãããŸããææã®ãããã·ã®ã»ããã䜿çšããããšã¯å¯èœã§ãããå人çã«ã¯ãç¡æã®ãããã·ãšãèªåã®IPããã³ãµãŒãããŒãã£ã®IPããã®ä»£æ¿ãªã¯ãšã¹ãã䜿çšããŸãããçŠæ¢ãããªãããã«ããªã¯ãšã¹ãã®ééã¯çŽ0.7ç§ã§ããããã®çµæããã¹ãŠã®ããŒã¿ã®ããŠã³ããŒãã«çŽ1æ¥ããããŸããã
æåã®ç« ã®ã¯ãšãªã䜿çšãããšãã¢ã«ãŽãªãºã ã¯æ¬¡ã®ããã«ãªããŸãã
- PECã¢ãã¬ã¹ã®ãã©ãŒããã
- é©åãªäœæã®ãªã¹ãããªã¯ãšã¹ãããŸã
- ãµã€ãããŒãžIDãå«ããªã¹ããååŸããŸã
- ãã®èå¥åã§ãµã€ãã«é¢ããããŒã¿ããã§ã«ããŠã³ããŒãããŠãããã©ããã確èªããŸã
- ãã®èå¥åã®ãµã€ãã®HTMLããŒãžãããŒãããŸã
- èŠçŽ ã__NEXT_DATA__ããæœåºããããŒã¿ãJSON圢åŒã§ä¿åããŸã
ãã®ããŒãžã¯ãbeautifulsoup4ã©ã€ãã©ãªã䜿çšããŠè§£æãããŸããã
ãã®ããã»ã¹ã¯å®ç§ã§ã¯ãããŸãããéåžžãã¹ã¯ãªããã¯Webãµã€ãäžã®å°åã§ããŸãã¯1ã€ã®PECã®ã¢ãã¬ã¹ã§ããŸã£ããç°ãªãPECã«é¢ããæ å ±ãèŠã€ãã12ã®ããŒãªã³ã°ã¹ããŒã·ã§ã³ãèŠã€ããŸããã
ããã¯åé¡ã§ã¯ãããŸãããå°åºããšã«ããµã€ãã§å¯Ÿå¿ããããŒãžãå°ãªããšã1ã€èŠã€ããå¿ èŠãããããã§ãã
ããŒã¿ã®å®å šæ§ãæ€èšŒããããã«ãUMGãµã€ãããããŠã³ããŒãããããŒã¿ã»ããã«åæ§æå¡ã«é¢ããæ å ±ãå«ãŸããŠãããã©ããã確èªããç°¡åãªã¹ã¯ãªãããäœæããŸããäžè¶³ããŠãããã®ãããå Žåã¯ãããŒã¿ã»ãããæåã§è£å ããŸããç¹°ãè¿ãã«ãªããŸããã1,100ã®å°åºã®ãã¡ããã®ãããªäŸå€çãªç¶æ³ã¯10æªæºã§ããã
UMGãšCECã®Webãµã€ãããã®ããŒã¿ãçµã¿åããã
ãã®æ®µéã§ãå°åºããšã®ååè£è ã«é¢ããæ å ±ïŒåè£è IDãæ°åãããŒãã£ãŒãUMGã«ãã£ãŠãµããŒããããŠãããã©ããã«é¢ããæ å ±ãå«ãã¿ã°ïŒãå«ã䟿å©ãªããŒã¿æ§é ãåéããŸãã
åéãããåè£ããŒã¿ã»ããã®äŸ
{
"33": [
{
"name": " ",
"vrn": 4444032121758,
"birthdate": "05.05.1958 00:00:00",
"party": "",
"smart_vote": 0
},
{
"name": " ",
"vrn": 4444032122449,
"birthdate": "16.11.1977 00:00:00",
"party": "",
"smart_vote": 0
},
{
"name": " ",
"vrn": 4444032122782,
"birthdate": "27.02.1996 00:00:00",
"party": "",
"smart_vote": 0
},
{
"name": " ",
"vrn": 4444032123815,
"birthdate": "20.11.1991 00:00:00",
"party": "",
"smart_vote": 1
},
{
"name": " ",
"vrn": 4444032124060,
"birthdate": "21.07.1996 00:00:00",
"party": "",
"smart_vote": 0
},
{
"name": " ",
"vrn": 4444032123597,
"birthdate": "21.05.1974 00:00:00",
"party": "",
"smart_vote": 0
}
],
...
}
ã¢ã«ãŽãªãºã ã¯ããªãåçŽã§ãã
- UMG Webãµã€ãã®ããŒã¿é åã«åºã¥ããŠãåå°åºã§ãµããŒããããŠããåè£è ã®ãªã¹ããäœæããŸã
- CEC Webãµã€ãã®ããŒã¿é åã䜿çšããŠãåæ§æå¡ã®æ¿èªãããåè£è ã®ãã£ã«ã¿ãªã³ã°ããããªã¹ããäœæããŸã
- åå°åºã§ã¯ããã«ããŒã ã§ã察å¿åè£-UMG-åè£-CECãèšç®ããŸã
ãã¡ããããã®ãããªåçŽãªã¢ã«ãŽãªãºã ã¯ãå€ãã®æœåšçãªåé¡ã®ç¶æ³ã説æããå¿ èŠããããŸãã
ãŸãã1ã€ã®æ§æå¡ã«ããŸã£ããåãååã®åè£è ãããå¯èœæ§ããããŸãã幞ããªããšã«ã5000人ã®åè£è ã®ãã¡ããã®ãããªç¶æ³ã¯1ã€ã®ã±ãŒã¹ã«ããããUMGã«ãã£ãŠãµããŒããããåè£è ã¯ããŸããã§ããã
次ã«ãCECWebãµã€ãã®ããŒã¿ããŒã¹ã«ãšã©ãŒãããå¯èœæ§ãããããšãèæ ®ã«å ¥ããå¿ èŠããããŸããæãäžè¬çãªééãïŒãã«ããŒã ã®æ¹è¡ãšäœåãªã¹ããŒã¹ããŸããæ祚çµæã®ããŒã¿ãåéããéã«ãå§ã®ããããeãã«çœ®ãæããå ŽåããããŸããã
第äžã«ãããŒã¿ã®é¢é£æ§ãèæ ®ã«å ¥ããå¿ èŠããããŸãã CECãšUMGã®Webãµã€ãã®ããŒã¿ã¯ãåææ¥ãŸã§å€æŽããã³æŽæ°ãããŸãããäžéšã®åè£è ã¯åé€/埩å ãããäžéšã®å°åã§ã¯UMGã®ãµããŒããå€æŽãããŸããã
UMGãªã¹ããæ€èšŒããããã«ãå°åºããšã«1ã€ã®ãªã¯ãšã¹ããè¡ãç°¡åãªã¹ã¯ãªãããäœæãïŒçµå±ãåéããããŒã¿ã»ããã«ãããåå°åºå°çšã®ããŒãžãäžæã«èå¥ã§ããããã«ãªããŸããïŒãååã以åã«åãåã£ããã®ãšäžèŽãããã©ããã確èªããŸãã
èå³æ·±ãã¿ã¹ã¯ã¯ããã©ã³ãã®ååã§ããŒãã£ãèå¥ããããšã§ããããã®ç¹ã¯é£ã°ããŠãããã®ã§ãããæ å ±ãçµ±äžããããã«ããããšæããŸãããåé¡ã¯ãããåœäºè ã®åè£è ãCECããŒã¿ããŒã¹ã§ç°ãªãååãæã£ãŠããå¯èœæ§ãããããšã§ããããšãã°ãKPRFã®å Žåã40ãè¶ ãããªãã·ã§ã³ããããŸããã
() " "
- ""
" "
...
25ã®ãããããããã»ãšãã©ãããããå°åããšã«ç°ãªãã¹ãã«ãæã£ãŠããå Žåãç¶æ³ã¯èå³æ·±ã解æã®åé¡ã«ãªããŸãã幞ããªããšã«ããã¹ãŠã®æäœæ¥ãæäŒã£ãŠãããå人ã®å©ããåããŠãåè£è ã®ããŒãã£ãŒãäžæã«æ±ºå®ããããã®ããŒã¯ãŒãã®ãªã¹ãããŸãšããŸããã
CECãŠã§ããµã€ãããã®éžæçµæã®ã¢ããããŒã
åéãããããŒã¿ã»ããã¯ããããžã§ã¯ãã®åœåã®ç®æšãéæããã®ã«ååã§ãããåæ§æå¡ã®UMG-2020åè£ã®ãªã¹ãããŸãšããŸãããããããéžæçµæãåŸãæè¡çãªæ©äŒãããã°ããããå©çšããŠã¿ãŸãããïŒ
å°åºéžæçµæ
http://cikrf.ru/iservices/sgo-visual-rest/vibory/CAMPAIGN_VRN/results/DISTRICT_VRN/major
- CAMPAIGN_VRN-ãã£ã³ããŒã³ID
- DISTRICT_VRN-å°åºID
ãªã¯ãšã¹ãã®äŸïŒ
httpïŒ//cikrf.ru/iservices/sgo-visual-rest/vibory/ 457422069597 / results / 457422069602 / major
ã¯ãšãªçµæ
{
"report":{
"tvd":"",
"date_sign":"none",
"vrnvibref":"457422069597",
"line":[
{
"txt":" ",
"kolza":"8488",
"index":"1"
},
{
"txt":" , ",
"kolza":"6700",
"index":"2"
},
...
{
"txt":" ",
"kolza":"65",
"index":"9"
},
{
"txt":" ",
"kolza":"1948",
"index":"10"
},
...
{
"delimetr":"1"
},
{
"txt":" ",
"numsved":"1",
"kolza":"112",
"index":"11",
"namio":" ",
"perza":"5.56",
"numsvreestr":"4574030258379"
},
{
"txt":" ",
"numsved":"2",
"kolza":"186",
"index":"12",
"namio":" ",
"perza":"9.24",
"numsvreestr":"4574030258723"
},
{
"txt":" ",
"numsved":"3",
"kolza":"54",
"index":"13",
"namio":"",
"perza":"2.68",
"numsvreestr":"4574030258555"
},
...
],
"data_gol":"13.09.2020 00:00:00",
"is_uik":"0",
"type":"423",
"version":"0",
"sgo_version":"5.6.0",
"isplann":"0",
"podpisano":"1",
"versions":{
"ver":{
"current":"true",
"content":"0"
}
},
"vibory":" ",
"repforms":"1",
"generation_time":"14.09.2020 07:59:21",
"nazv":" () ",
"datepodp":"14.09.2020 05:44:00"
}
}
ã芧ã®ãšãããçµæã¯å°åå§å¡äŒã®è°å®æžã®åœ¢ã§è¿ãããŸããåå°åã«ã¯ç°ãªããããã³ã«åœ¢åŒãšãã®äžã®å°å ¥è¡ã®æ°ããããããæœåºããããŒã¿ã®æ éãªæ€èšŒãå®è¡ããå¿ èŠããããŸãã
GASãVyboryããäºåçãªçµæãçºè¡šãå§ãããšããç§ã¯å°ããã£ããããŸããã APIãä»ããŠãå ¬åŒã«æ¿èªãããçµæã«é¢ããããŒã¿ã®ã¿ãååŸã§ããããšãå€æããŸãããæ«å®çµæã¯ãéžæå§å¡äŒã®å€ãWebãµã€ãã§åŒãç¶ã衚瀺ã§ããŸãããæ°ããWebãµãŒãã¹ã§ã¯è¡šç€ºã§ããŸããã
1æ¥åŸã50ïŒ ã®çµæãå€æããé±ã®çµãããŸã§ã«ã»ãŒãã¹ãŠã®éžæã®çµæãåèšãããŸããããäžéšã®å°åã§ã¯ãŸã çµæã®æ¿èªãæåŠããŠããŸããããã®èšäºã®å·çæç¹ã§7æ¥ãçµéããŠãããã¿ã³ããã§ã®éžæã®çµæã¯ãŸã æ¿èªãããŠããŸãããããã«ãäžéšã®æ§æå¡ã§ã¯åéèšãè¡ãããããããããã®çµæã¯APIãããå©çšã§ããŸããã
çµè«ïŒAPIã¡ãœããã¯çŸåšãæ祚çµæãè¿ éã«åãåãã«ã¯é©ããŠããŸãããçµæãæ¿èªããããŸã§1é±é以äžåŸ ã€ããéžæå§å¡äŒã®å€ããµã€ãã解æããŠããã£ããã£ããã€ãã¹ããæ¹æ³ãèŠã€ããå¿ èŠããããŸãã
1100ã®æ§æå¡ã®ãã¡çŽ30ã§éžæãæ¿èªãããã®ãåŸ ã€ã®ã«ããããããŠããã®ã§ãã»ã¬ã³ã©ã€ãã©ãªã䜿çšããŠã¹ã¯ãªãããäœæããŸããããã®ã¹ã¯ãªããã¯ãéžæå§å¡äŒã®ã¯ã©ã·ãã¯ãµã€ãããããŒã¿ãããŠã³ããŒããããªã¯ãšã¹ãããšã«æåã§ãã£ããã£ã解決ããããã«æ±ããŸãããªã¯ãšã¹ãã®æ°ãéåžžã«å°ãªããããæåã§ãã£ããã£ã解決ããã®ã«ããã»ã©æéã¯ããããŸããã
ãã®çµæãæ祚çµæã®ããŒã¿ã次ã®ããã«åéããŸããã
é¡ã®æ祚çµæã®äŸ
{
...
"33": {
"candidate_total": {
"4444032121758": 880,
"4444032122449": 236,
"4444032122782": 143,
"4444032123597": 152,
"4444032123815": 149,
"4444032124060": 72
},
"is_final": 1,
"non_valid_votes": 132,
"registered_voters": 6928,
"valid_votes": 1632
},
...
}
æ§æå¡ããšã«ããªã¹ãã«ããæ祚è ã®ç·æ°ïŒæ祚æ°ãèšç®ããããïŒãæå¹ãªæ祚ãšç¡å¹ãªæ祚ã®æ°ãä¿åããŸãããæ§é ã«ã¯èŸæžãå«ãŸããŠããŸãïŒåè£èå¥å->圌ãå ¥åããæ祚æ°ã
UMG-2020ã®çµæã®å ¬è¡š
ãŸããåéããããŒã¿ãJSON圢åŒã§GitHubã«å ¬éããŸããããã¹ãŠã®å°åºã§çµæãæ€èšŒããããŸã§ãããŒã¿ã¯æŽæ°ãããŸãã
次ã«ããããžã§ã¯ãã«æ³šç®ãéããããã«ãåéãããã¹ãŠã®ããŒã¿ãèŠèŠçãªåæã«äŸ¿å©ãªåœ¢åŒã§å«ãGoogleã¹ãã¬ããã·ãŒããçæããããšã«ããŸããã
詳现ã«ã€ããŠã¯èª¬æããŸãããåé¡ã¯çºçããŸããïŒGoogle Sheets APIã®åŠç¿ãé€ãïŒãPythonã§ã®GoogleSheetsAPIãšã®ããåãã«ã€ããŠè©³ãã説æããŠãããã®èšäºããå§ãããŸãã
ãã®çµæã次ã®è¡šãåŸãããŸããã
- é¢äžããéžæã®ãªã¹ã
- é¢ä¿è äžèŠ§
- å°åºå¥ã®åè£è ãªã¹ã
- å°åºå¥ã®éžæçµæ
- ãã©ã€ãµããªãŒããŒã¿
ããšãã
ãã®ãããããžã§ã¯ãã®ã¢ã€ãã¢ã¯ãæ祚æ¥ã®3æ¥åã«çãŸããŸãããç§ã¯ãå¯èœãªéãçãæéã§ãã¹ãŠãç 究ããŠå®è£ ããããšãã§ããããšã«å人çã«æºè¶³ããŠããŸãïŒã³ãŒãã¯ã²ã©ãããšãå€æããŸãããïŒã
ã¹ããŒãæ祚æŠç¥ã®çµæã«ã€ããŠçµè«ãåºãã€ããã¯ãããŸãããéžæçµ±èšã®ãã¡ã³ã«ããŒã«ãæäŸããã ãã§ããç§ã¯ããªãã®äžã«ããã€ããããšç¢ºä¿¡ããŠããŸãããããŠããã«ç§ãã¡ã¯èå³æ·±ãã°ã©ããšå³ã§çŽ æŽãããç 究ãèŠãã§ãããã