状態をオヌプンにする方法、パヌト1自分の手で事故統蚈をダりンロヌドする

うたく怜玢すれば、非垞に倚くの有甚で適切な品質の状態情報を芋぀けるこずができたす。 しかし、残念ながら、これはただではありたせん。詊隓ず教育、倩気、地図䜜成、犯眪デヌタ...、亀通事故です。



したがっお、私には2぀の呜がありたす。1぀は、圹人が人や組織が求めるデヌタを開くのを支揎し、もう1぀は、特に「頑固な」政府機関の公開デヌタベヌスをオヌプンデヌタに倉換し、それに぀いお他の人に教えるパヌサヌを曞くこずです。倚くのプロゞェクトがあり、州は避けられないものを我慢し、すべおを私たちにずっお䟿利な圢にするでしょう。



この蚘事は、「Gossitesから機械読み取り可胜なデヌタを取埗する方法」シリヌズの最初のマニュアルになりたす。 ですから、今日-亀通事故の統蚈に぀いお、そしお州は私たちにそれを䞎えおいないので、私たちはそれを自分で収集する方法を孊びたす。 䌝統により、コヌドずデヌタが添付されたす。







事故に぀いお



䞖界保健機関の報告を信じるなら、2013幎のロシアでは、亀通事故で10䞇人あたり18.9人が死亡したした。スりェヌデンでは2.8人、ベラルヌシでは13.7人です。







しかし、すでに2017幎には、ベラルヌシの死亡率はEU諞囜よりも䜎くなり、䞀般に10幎で3倍に枛少したした。 写真はもう1぀の興味深い点を瀺しおいたす。ロシアの堎合、2010幎以降状況は倉わっおいたせんが、ベラルヌシずスりェヌデンでは、死の赀い線が持続的に枛少しおいたす。



奇跡の理由は、スりェヌデンのプログラムVision Zeroです 。これは、人々をより泚意を払っお責任を持たせるこずは難しいが、環境自䜓が人々の安党を確保できるようにするこずです。



ベラルヌシでは、この考えに基づいお「マむナス100」プログラムが開始されたした毎幎100人の死者を出したせんでしたが、ある時点で、速床の䜎䞋、速床の䜎䞋、および亀通制埡の機胜が顕著な効果を発揮しなくなりたした。



それから私はデヌタに頌らなければなりたせんでした。 この分析から埗られた結論は予想倖でした。たずえば、ミンスクでは、酔っ払ったドラむバヌず激しく戊い、その2がありたした。 はい、そしお人々はスピヌドを保っおいたので、それはポむントではありたせんでした。 本圓の理由は、暗闇で目に芋えない歩行者ずドラむバヌの朝の泚意散挫でした2017幎にミンスクで死亡した41人のうち32人は歩行者であり、最も頻繁に起こる死亡事故は0000-0300ず0600-0900の間に発生したした。



もちろん、ロシアでは、事故の統蚈を研究した結果、道路䞊の「悪い」堎所を芋぀けお説明できるずいう結論に、研究者は䜕床も思い぀きたした。 2012幎、ノボシビルスクの掻動家は、地元の亀通譊察のレポヌトを収集する2012幎10月から2013幎3月たで毎日、歩行者ずの亀通事故マップを䜜成したした 。



ロシアのデヌタ゜ヌス



ロシアでの亀通事故の適切な分析を行う機䌚は、亀通譊察からの亀通事故統蚈マップずずもに登堎したした。少なくずも2016幎には、正確な䜏所ず時間に関するデヌタを芋぀けるこずが可胜であり、2017幎には情報がありたした玄倢芋るこずができるのは、亀通状況の詳现、時刻、事故ず損害の詳现などです。 このすべおに、「しかし」たった1぀しかありたせんでした。デヌタは䞀床に1぀しかダりンロヌドできたせんでした。 自治䜓は、たずえばモスクワの1぀の地区です。



方法1 マりスを3回クリックしおモスクワのある地区のstat.gibdd.ruのデヌタにアクセスし 、さらに3回クリックしおそれらをダりンロヌドしたす少なくずもxmlで、そしおjsonに぀いおこのオプションを忘れおください。 数えおみたしょうロシアの85の地域には、合蚈2423の自治䜓がありたす。

2423 * 6 = 14538マりスクリック


瞑想







あなたが動揺しないように、 方法2もありたす 道路の安党な リ゜ヌス。RF通信省圌らはstat.gibdd.ruもダりンロヌドする疑いがありたす。



その䞭で、「オヌプンデヌタ」セクションでは、最初、䞍完党な統蚈がcsvで「フラット」圢匏で衚瀺され、2017幎にはjsonで詳现になりたしたが、このリ゜ヌスでは垞に䜕かが発生したす2017幎7月に詳现デヌタが投皿されたしたが、8月すべおセキュリティ蚌明曞の有効期限が切れたため、サむトは機胜したせんでした。 その埌、再び機胜したしたが、誰もデヌタを曎新したせんでした。 2018幎5月の初めに、曎新プログラムが登堎したしたが、詳现なデヌタが再び倱われたした-気象条件、車䞡の損傷の性質など2017幎の603 MBではなく90 MB。



しかし、ロシアのプログラマヌはあきらめず、この間に倚くの優れたプロゞェクトが䜜成されたした。SergeyUstinov jimborobinの BarnaulずMoscowの事故統蚈、Alexander Kukushkin alexkukuの詳现な研究 、Konstantin Varikの芖芚化 。

updHuGoのおかげで、 クラスノダルスクの 「Zero Deaths」ずキヌロフのdtpstat.ruの 2぀のプロゞェクトが远加されたした。

upd2Alexander Elmekeevの詳现な研究を読むこずをお勧めしたす。 珟圚、マップ䞊の衚瀺は機胜しおいたせんが、 ゜ヌスコヌドはそのたたです。 ゞオタグを修正したす。



そしお、2぀の長期プロゞェクト 「れロデス」-Vision Zeroぞの答えずサンクトペテルブルクの道路での亀通事故の分析ず予枬に関するごく最近のプロゞェクトは、 こちら できればIE経由で芋るこずができたす。



もちろん、急いでいるプロゞェクトごずに、別のパヌサヌが䜜成されたした...



自分でパヌシム



パヌサヌは 、完党に安定しお動䜜するこずを願っおいたすが、実際にはちょうど1幎前に曞きたしたそしお、この蚘事は添付されおいるはずです。 そのタスクは、研究者に最新のデヌタを提䟛するこずです。そのため、コマンドラむンずマニュアルさえありたす。



しかし、コヌドに移る前に、たずサむトを独立しお探玢する方法を孊びたしょう。 必芁なのは、 ChromeブラりザヌずPostmanアプリケヌション同時にPostman Interceptorアドオンをむンストヌルするです。

むンストヌル埌、 chrome// chromeのアドレスバヌにappsず入力したす。Postmanを含む、アプリケヌションがむンストヌルされたペヌゞが開きたす。



サむトを勉匷したす



さたざたなサむト゚ンゞンがありたす。 最も単玔なものは、パラメヌタヌを蚭定できるアドレスバヌで管理されたす。 stat.gibdd.ruは異なりたす。jsonで urlコマンドずデヌタパケットを組み合わせるずいう原則に基づいお動䜜したす。 それでも、すべおのサむトの研究戊略は同じです。ChromeDevToolsを起動し、サむトに必芁な凊理を匷制し、デバッガヌりィンドりで倉曎を泚意深く監芖したす。



それでは、モスクワのある地区のデヌタを取埗しおみたしょう。

stat.gibdd.ruを開き、奜きな期間2017幎の党䜓がありたすを遞択し、その暪にある[適甚]ボタンをクリックしたす。







次に、マップ䞊でモスクワを遞択するず、デバッガヌを起動できたす。マップ䞊のどこかを右クリックし、[コヌドの衚瀺]を遞択するず、[ 開発ツヌル]りィンドりが衚瀺されたす。 その䞭にメニュヌの[ ネットワヌク ]タブがありたす。 䞍芁な䞍芁なリク゚ストを削陀するには、すぐにフィルタヌを[ すべお]から[ XHR]に倉曎するこずをお勧めしたす。



奜きな゚リアを遞択したすPerovoがありたす。 DevToolsりィンドりでは、巊偎にgetDTPCardDataず呌ばれる2぀のリク゚ストが衚瀺されおいたす。 それらのいずれかをクリックしお、右偎のりィンドりで[ ヘッダヌ ]タブを遞択するず、リク゚ストヘッダヌが衚瀺されたす。 ここでは、リク゚ストの正確なURLず、リク゚ストの送信方法GETおよびPOSTの堎合がありたすに関心がありたす。 詳现に興味がある人、そしお私たちの堎合、 POSTの碑文を芋お同意したす。 すぐ䞋にステヌタスコヌドの倀がありたす200-リク゚ストが成功し、デヌタが到着したこずを意味したす。 スクリヌンショットで䞀床にすべおを芋る







デヌタをダりンロヌドする



リンクができたので、jsonパッケヌゞを芋぀ける必芁がありたす。 これを行うには、[ ヘッダヌ]りィンドりを最埌たでスクロヌルし、 [ペむロヌドのリク゚スト]セクションを参照したす。 [ リク゚ストペむロヌド]の暪にある[ ゜ヌスを衚瀺]をクリックしお、元の圢匏でデヌタパケットを取埗したす。 どこかに自分自身にコピヌしたす。 これで、 Postmanを介しおサむト゚ンゞンから盎接デヌタを受信する準備がすべお敎いたした。







Postmanを起動し、すぐにむンタヌセプタヌをオンにしたす䞊郚にある䞞いアむコン、矢印が指したす。 むンタヌセプタヌは Cookieをむンタヌセプトしたす それらがなければ、サむトは私たちの芁求を満たすこずを拒吊したす。



次に、リク゚ストを蚭定する必芁がありたす。送信方法ずしおPOSTを遞択し、コマンドurlを貌り付け、以前にコピヌしたデヌタパケットを远加したすBody-> raw-> JSONapplication / json 。 䞀般的に、赀い矢印に埓っおください。







次に、[ 送信 ]たたは[ 送信 しおダりンロヌド ]をクリックしお、デヌタをすぐにダりンロヌドしたす。 りィンドりの右䞋に「Status200 OK」ずいう碑文が衚瀺され、jsonファむルをダりンロヌドするためのりィンドりが開きたす2぀の黒い矢印に泚目したす。 ゚ラヌの堎合、ステヌタス500が衚瀺される可胜性が高く、jsonではなく、txtが゚ラヌテキストずずもにダりンロヌドされたす。



私はすべおがうたくいったこずを願っおいたす、そしお今jsonで䜕を持っおいるかを理解したしょうか







最初のパラメヌタは非垞に長い「日付」パラメヌタで、期間が蚭定され、毎月個別に登録する必芁がありたす。 「MONTHS1.2017」のように芋えたす。「MONTHS」は必須キヌ垞に倧文字、1は月番号1月、2017は明らかに幎です。



さらに2぀の必須フィヌルドがありたす。 「ParReg」 -地域のOKATOコヌドこの堎合は45-モスクワのコヌドず「reg」 -自治䜓のOKATOコヌドこの堎合は45263583-Perovo地区のコヌド。



そしお、解析の運呜が䟝存するさらに2぀の重芁なフィヌルドこれらは、 「st」ず「en」ずいう2぀のフィヌルドです。぀たり、リ゜ヌスから取埗する最初ず最埌の事故カヌドの数です。 デフォルトでは、サむトは16枚のカヌドを入れたすこれはサむトのポップアップりィンドりで確認できたすが、 st = 1、en = 100を指定しお、すぐに100件の亀通事故を起こすこずができたす。 貪欲にならず、たくさん䟋えば1000を入れないこずをお勧めしたす。 サむトはタむムアりトによりリク゚ストを䞭断する堎合がありたす。 次のカヌドが必芁な堎合は、 st = 101、en = 200ず曞いおください。



あなたがすでに疑問に思っおいるなら、それは良いでしょう、なぜそこに「\」があるのですか これらはサヌバヌに転送するためのjsonパッケヌゞの詳现ですが、次のように簡単に説明できたす。 「デヌタ」の埌にコロンが付いたものはすべお行です。 文字列に単玔に匕甚笊を曞くこずはできないため、その前にバックスラッシュが配眮されたす。 Postmanやその他のシェルの堎合、これは重芁ですが、Pythonを介しおリク゚ストを送信するず、すべおの凊理が行われたす。



そしお、䞍泚意な研究者に苊痛を䞎える別の重芁な詳现。 サヌバヌに送信されるデヌタの重量をできるだけ少なくするために、いわゆる「コンパクトレコヌド」がありたす。 私たちにずっお、これは私たちが「矎のために」眮くすべおのスペヌスが犁止されおいるこずを意味したす。 stat.gibdd.ruはこれに非垞に敏感であるため、リク゚ストが正しいず思われ、200ではなくHTTP 500が返された堎合は、スペヌスがどこかに入力されおいるかどうかを確認しおください。



パヌサヌを曞く



準備ができお、できればコメントが十分なパヌサヌはこちら 。



圌に぀いお知る必芁がある最も重芁なこず



1デヌタを受信したす r = requests.posturl、json = payload 。 ここで、 urlずpayloadは、 DevToolsを介しおキャッチし 、 Postmanに远加した倀です。

擬䌌コヌドの䞀郚。これにより、事故カヌドを取埗できたす。



cards_dict = {"data":{"date":["MONTHS:1.2017"],"ParReg":"71100","order":{"type":"1","fieldName":"dat"},"reg":"71118","ind":"1","st":"1","en":"16"}} cards_dict["data"]["ParReg"] = "45" #   cards_dict["data"]["reg"] = "45263583" #   cards_dict["data"]["st"] = 1 #   cards_dict["data"]["en"] = 100 #   cards_dict_json = {} cards_dict_json["data"] = json.dumps(cards_dict["data"], separators=(',', ':')).encode('utf8').decode('unicode-escape') #         r = requests.post("http://stat.gibdd.ru/map/getDTPCardData", json=cards_dict_json) #    +    
      
      





2サむトから送信されたデヌタを䜿甚するには、jsonに戻す必芁がありたす json.loadsr.content 



 if r.status_code == 200: cards = json.loads(json.loads(r.content)["data"])["tab"]
      
      





3デヌタをファむルに保存するには、次のように蚘述したす json.dumpjson_data、f、ensure_ascii = False、separators = '、'、 ''ここで、 json_dataはデヌタであり、 fはそれらが含たれるファむルですwrite、 ensure_ascii = False-私のように、キリル文字の代わりにキリル文字のようなものを読みたくない堎合に保存されたす。 。



 filename = os.path.join(data_dir, "{} {} {}-{}.{}.json".format(region["id"], region["name"], months[0], months[len(months) - 1], year)) with codecs.open(filename, "w", encoding="utf-8") as f: json.dump(dtp_dict_json, f, ensure_ascii=False, separators=(',', ':'))
      
      





より䟿利なリンク



jsonには、゚スケヌプされた制埡文字がしばしば付属しおいたす。 シヌルドを削陀するには、 オンラむンサヌビスがありたす 。



事故に関する情報を生の圢で読みやすくするために、 jsonパヌサヌが圹立ちたす。 さらに、バリデヌタヌがありたす-ファむルのほずんどを捚おる必芁があるず同時に、括匧が収束しなくなる堎合に䟿利です。



誰かがスクリヌンショットで説明を䜜成する方法を疑問に思っおいるなら、 FastStone Captureをお勧めしたす。



たた、パヌサヌは必芁ないが、すぐにデヌタが必芁な堎合は、 こちらをご芧ください 。 これは、2015幎1月1日から2018幎4月3日たでのすべおの事故統蚈です。ちなみに、パヌサヌは亀通譊察のりェブサむトず比范しおわずかなボヌナスを提䟛したす。 そのため、ナヌザヌには3月ず4月のわずかなデヌタがありたす。



良いデヌタず研究。 政府のサむトを保護し、ドロップしないでください。



コメントの結果に応じお曎新 デヌタを解析したり、事故でプロゞェクトを行った堎合は、䜕らかの方法で私に連絡しおくださいコメント、PM、nike64 @ gmail.com。 私の同僚ず私はそのようなプロゞェクトから経隓を集めおいたす。 テレグラムチャットOpenDataRussiaChatで、このデヌタやその他のオヌプンデヌタに぀いお話すこずができたす。



All Articles