{"id":89206,"date":"2020-07-20T07:41:57","date_gmt":"2020-07-20T05:41:57","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/chto-mozhet-pojti-ne-tak-s-data-science-sbor-dannyh"},"modified":"2020-07-20T07:41:57","modified_gmt":"2020-07-20T05:41:57","slug":"chto-mozhet-pojti-ne-tak-s-data-science-sbor-dannyh","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/chto-mozhet-pojti-ne-tak-s-data-science-sbor-dannyh","title":{"rendered":"Mi j\u00f6het m\u00e9g a Data Science ter\u00e9n? Adatgy\u0171jt\u00e9s","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/510944\/\"><img decoding=\"async\" alt=\"Mi j\u00f6het m\u00e9g a Data Science ter\u00e9n? Adatgy\u0171jt\u00e9s\" src=\"\/wp-content\/uploads\/2020\/07\/49fb91fc3e45754e437b2c1fc4fec12f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\nMa m\u00e1r l\u00e9tezik 100500 Data Science tanfolyam, \u00e9s r\u00e9g\u00f3ta tudjuk, hogy Data Science-ben a legt\u00f6bb p\u00e9nzt a Data Science tanfolyamokkal lehet keresni (minek \u00e1sni, ha lap\u00e1tokat lehet \u00e1rulni?). Ezeknek a tanfolyamoknak a f\u0151 h\u00e1tr\u00e1nya, hogy semmi k\u00f6z\u00fck nincs a val\u00f3s munk\u00e1hoz: senki nem ad tiszta, feldolgozott adatokat a megfelel\u0151 form\u00e1tumban. Amikor befejezed a tanfolyamot \u00e9s elkezded megoldani a val\u00f3di feladatokat, sz\u00e1mos \u00e1rnyalat bukkanna fel.<\/p>\n<p>Ez\u00e9rt elkezdj\u00fck a \u201eMi mehet rosszul a Data Science-szel\u201d c\u00edm\u0171 jegyzet sorozatot, amely val\u00f3s esem\u00e9nyeken alapul, amelyek velem, bar\u00e1taimmal \u00e9s koll\u00e9g\u00e1immal t\u00f6rt\u00e9nt. Val\u00f3s p\u00e9ld\u00e1kon fogjuk elemezni a tipikus Data Science feladatokat: hogy ez val\u00f3j\u00e1ban hogyan zajlik. Ma a data collection feladattal kezd\u00fcnk.<\/p>\n<p>Az els\u0151, amivel az emberek szembes\u00fclnek, amikor val\u00f3di adatokkal dolgoznak, az az adott relev\u00e1ns adatok \u00f6sszegy\u0171jt\u00e9se. Ennek a cikknek a kulcsfontoss\u00e1g\u00fa \u00fczenete:<\/p>\n<blockquote><p><b>Rendszeresen al\u00e1becs\u00fclj\u00fck az id\u0151t, er\u0151forr\u00e1sokat \u00e9s energi\u00e1t az adatok \u00f6sszegy\u0171jt\u00e9s\u00e9re, tiszt\u00edt\u00e1s\u00e1ra \u00e9s el\u0151k\u00e9sz\u00edt\u00e9s\u00e9re.<\/b><\/p><\/blockquote>\n<p>\n\u00c9s ami a legfontosabb, megvitatjuk, mit tehet\u00fcnk annak elker\u00fcl\u00e9se \u00e9rdek\u00e9ben.<\/p>\n<p>K\u00fcl\u00f6nb\u00f6z\u0151 becsl\u00e9sek szerint az adatok tiszt\u00edt\u00e1sa, \u00e1talak\u00edt\u00e1sa, feldolgoz\u00e1sa, feature engineering stb. 80-90% id\u0151t vesz ig\u00e9nybe, m\u00edg az elemz\u00e9s 10-20%-ot, mik\u00f6zben a szinte \u00f6sszes tananyag kiz\u00e1r\u00f3lag az elemz\u00e9sre \u00f6sszpontos\u00edt.<\/p>\n<p>N\u00e9zz\u00fck meg, hogyan oldhat\u00f3 meg egy egyszer\u0171 analitikai feladat tipikus p\u00e9ldak\u00e9nt h\u00e1rom verzi\u00f3ban, \u00e9s l\u00e1ssuk, milyen \"enyh\u00edt\u0151 k\u00f6r\u00fclm\u00e9nyek\" lehetnek.<\/p>\n<p>P\u00e9ldak\u00e9nt ism\u00e9t megvizsg\u00e1ljuk az adatgy\u0171jt\u00e9s \u00e9s k\u00f6z\u00f6ss\u00e9gek \u00f6sszehasonl\u00edt\u00e1s\u00e1nak hasonl\u00f3 vari\u00e1ci\u00f3it:<\/p>\n<ol>\n<li>K\u00e9t Reddit alr\u00e9teg<\/li>\n<li>K\u00e9t Habr szekci\u00f3<\/li>\n<li>K\u00e9t Oszt\u00e1lyt\u00e1rsak csoport<\/li>\n<\/ol>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Elm\u00e9leti megk\u00f6zel\u00edt\u00e9s<\/h2>\n<p>\nNyisd meg a weboldalt, \u00e9s olvasd el a p\u00e9ld\u00e1kat, ha \u00e9rthet\u0151, t\u00e9gy f\u00e9lre n\u00e9h\u00e1ny \u00f3r\u00e1t az olvas\u00e1sra, n\u00e9h\u00e1ny \u00f3r\u00e1t a p\u00e9ld\u00e1k k\u00f3dol\u00e1s\u00e1ra \u00e9s hibakeres\u00e9s\u00e9re. Adj hozz\u00e1 n\u00e9h\u00e1ny \u00f3r\u00e1t az \u00f6sszegy\u0171jt\u00e9shez. Szorozd meg ezt kett\u0151vel, \u00e9s adj hozz\u00e1 N \u00f3r\u00e1t.<\/p>\n<p><b>A kulcsfontoss\u00e1g\u00fa pont: az id\u0151becsl\u00e9s felt\u00e9telez\u00e9seken \u00e9s tal\u00e1lgat\u00e1sokon alapul arr\u00f3l, hogy mennyi id\u0151t vesz ig\u00e9nybe.<\/b><\/p>\n<p>Az id\u0151 elemz\u00e9s\u00e9t a k\u00f6vetkez\u0151 param\u00e9terek becsl\u00e9s\u00e9vel kell kezdeni a fenti felt\u00e9telezett feladatn\u00e1l:<\/p>\n<ul>\n<li>Mekkora az adatok m\u00e9rete, \u00e9s mennyit kell fizikailag \u00f6sszegy\u0171jteni (*l\u00e1sd lent*).<\/li>\n<li>Mennyi id\u0151 sz\u00fcks\u00e9ges egy felv\u00e9tel \u00f6sszegy\u0171jt\u00e9s\u00e9re, \u00e9s mennyit kell v\u00e1rni, miel\u0151tt a m\u00e1sodikat lehetne \u00f6sszegy\u0171jteni.<\/li>\n<li>Mentsd el a k\u00f3d\u00edr\u00e1st, hogy meg\u0151rizze az \u00e1llapotot, \u00e9s kezdje \u00fajra, amikor (nem ha) minden le\u00e1ll.<\/li>\n<li>Ellen\u0151rizd, sz\u00fcks\u00e9g\u00fcnk van-e hiteles\u00edt\u00e9sre, \u00e9s tervezd meg az API-hozz\u00e1f\u00e9r\u00e9s megszerz\u00e9s\u00e9nek idej\u00e9t.<\/li>\n<li>Tervezd meg a hib\u00e1k sz\u00e1m\u00e1t az adatok \u00f6sszetetts\u00e9ge f\u00fcggv\u00e9ny\u00e9ben \u2014 \u00e9rt\u00e9keld konkr\u00e9t feladat alapj\u00e1n: strukt\u00fara, h\u00e1ny \u00e1talak\u00edt\u00e1s van, mit \u00e9s hogyan extrah\u00e1lunk.<\/li>\n<li>Tervezd meg a h\u00e1l\u00f3zati hib\u00e1kat \u00e9s a projekt nem szabv\u00e1nyos viselked\u00e9s\u00e9b\u0151l ad\u00f3d\u00f3 probl\u00e9m\u00e1kat.<\/li>\n<li>\u00c9rt\u00e9keld, hogy a sz\u00fcks\u00e9ges funkci\u00f3k szerepelnek-e a dokument\u00e1ci\u00f3ban, \u00e9s ha nem, akkor mennyi \u00e9s hogyan sz\u00fcks\u00e9ges egy workaroundhoz.<\/li>\n<\/ul>\n<p>\nA legfontosabb dolog az id\u0151\u00e9rt\u00e9kel\u00e9s sor\u00e1n \u2014 val\u00f3j\u00e1ban id\u0151t \u00e9s er\u0151fesz\u00edt\u00e9st kell ford\u00edtanod a \"harci felder\u00edt\u00e9sre\" \u2014 csak akkor lesz helyes a tervez\u00e9sed. Teh\u00e1t b\u00e1rmennyire is nyomnak, hogy \"mennyi id\u0151 kell az adatok \u00f6sszegy\u0171jt\u00e9s\u00e9hez\" \u2014 adj magadnak id\u0151t az el\u0151zetes elemz\u00e9sre, \u00e9s \u00e9rvelj azzal, hogy mennyire fog v\u00e1ltozni az id\u0151 a feladat val\u00f3s param\u00e9terei alapj\u00e1n.<\/p>\n<p>Most konkr\u00e9t p\u00e9ld\u00e1kat fogunk bemutatni, ahol az ilyen param\u00e9terek meg fognak v\u00e1ltozni.<\/p>\n<p><b>Kulcsfontoss\u00e1g\u00fa szempont: az \u00e9rt\u00e9kel\u00e9s a munka mennyis\u00e9g\u00e9t \u00e9s \u00f6sszetetts\u00e9g\u00e9t befoly\u00e1sol\u00f3 kulcsfontoss\u00e1g\u00fa t\u00e9nyez\u0151k elemz\u00e9s\u00e9n alapul.<\/b><\/p>\n<p>A tal\u00e1lgat\u00e1sokon alapul\u00f3 \u00e9rt\u00e9kel\u00e9s j\u00f3 megk\u00f6zel\u00edt\u00e9s, amikor a funkcion\u00e1lis elemek el\u00e9g kicsik, \u00e9s nem sok t\u00e9nyez\u0151 van, amely jelent\u0151sen befoly\u00e1solhatja a feladat strukt\u00far\u00e1j\u00e1t. De a Data Science egyes feladatain\u00e1l ezekb\u0151l a t\u00e9nyez\u0151kb\u0151l rendk\u00edv\u00fcl sok van, \u00e9s ez a megk\u00f6zel\u00edt\u00e9s megfelel\u0151tlenn\u00e9 v\u00e1lik.<\/p>\n<h2>Reddit k\u00f6z\u00f6ss\u00e9gek \u00f6sszehasonl\u00edt\u00e1sa<\/h2>\n<p>\nKezdj\u00fck a legk\u00f6nnyebb esettel (mint k\u00e9s\u0151bb kider\u00fcl). Ha teljesen \u0151szint\u00e9k akarunk lenni, el\u0151tt\u00fcnk gyakorlatilag egy t\u00f6k\u00e9letes eset \u00e1ll, ellen\u0151rizz\u00fck a komplexit\u00e1si ellen\u0151rz\u0151list\u00e1nkat:<\/p>\n<ul>\n<li>Van egy rendezett, vil\u00e1gos \u00e9s dokument\u00e1lt API.<\/li>\n<li>Rendk\u00edv\u00fcl egyszer\u0171, \u00e9s legf\u0151k\u00e9pp automatikusan l\u00e9trej\u00f6n a token.<\/li>\n<li>Van <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/praw-dev\/praw\">python wrapper<\/a><\/noindex> \u2014 rengeteg p\u00e9ld\u00e1val.<\/li>\n<li>A Reddit adatgy\u0171jt\u00e9sre \u00e9s elemz\u00e9sre szakosodott k\u00f6z\u00f6ss\u00e9ge (m\u00e9g youtube vide\u00f3k is magyar\u00e1zz\u00e1k, hogyan haszn\u00e1ljunk python wrapper-t) <noindex><a rel=\"nofollow\" href=\"https:\/\/www.programcreek.com\/python\/example\/86599\/praw.Reddit\">itt p\u00e9ld\u00e1ul<\/a><\/noindex>.<\/li>\n<li>A sz\u00fcks\u00e9ges m\u00f3dszerek val\u00f3sz\u00edn\u0171leg l\u00e9teznek az API-ban. S\u0151t, a k\u00f3d kompakt \u00e9s tiszta, lent egy p\u00e9lda egy funkci\u00f3ra, amely a hozz\u00e1sz\u00f3l\u00e1sokat gy\u0171jti \u00f6ssze.<\/li>\n<\/ul>\n<p><\/p>\n<pre><code class=\"python\">def get_comments(submission_id):\n    reddit = Reddit(check_for_updates=False, user_agent=AGENT)\n    submission = reddit.submission(id=submission_id)\n    more_comments = submission.comments.replace_more()\n    if more_comments:\n        skipped_comments = sum(x.count for x in more_comments)\n        logger.debug('Skipped %d MoreComments (%d comments)',\n                     len(more_comments), skipped_comments)\n    return submission.comments.list()\n<\/code><\/pre>\n<p><i>Forr\u00e1s: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/timendum\/reddit-utilities\/blob\/master\/thread-export.py\">ebben<\/a><\/noindex> k\u00e9nyelmes seg\u00e9dprogramok gy\u0171jtem\u00e9nye.<\/i><\/p>\n<p>Annak ellen\u00e9re, hogy itt a legjobb eset \u00e1ll el\u0151tt\u00fcnk, figyelembe kell venni n\u00e9h\u00e1ny fontos t\u00e9nyez\u0151t a val\u00f3s \u00e9letb\u0151l:<\/p>\n<ul>\n<li>API-korl\u00e1tok \u2014 a sz\u00fcks\u00e9ges adatokat k\u00f6tegekben kell lek\u00e9rdezn\u00fcnk (v\u00e1rakozva a k\u00e9r\u00e9sek k\u00f6z\u00f6tt, stb.).<\/li>\n<li>Adatgy\u0171jt\u00e9si id\u0151 \u2014 a teljes elemz\u00e9shez \u00e9s \u00f6sszehasonl\u00edt\u00e1shoz jelent\u0151s id\u0151t kell sz\u00e1nnunk arra, hogy a p\u00f3kh\u00e1l\u00f3 v\u00e9gigj\u00e1rja a szubreddit-et.<\/li>\n<li>A botnak a szerveren kell futnia \u2014 nem ind\u00edthatja el egyszer\u0171en a laptopj\u00e1n, hogy azt\u00e1n h\u00e1tizs\u00e1kba rakja \u00e9s elmenjen \u00fczleti \u00fcgyekhez. Ez\u00e9rt minden VPS-en fut.<\/li>\n<li>N\u00e9h\u00e1ny adat fizikailag el\u00e9rhetetlen (csak az adminok sz\u00e1m\u00e1ra l\u00e1that\u00f3 vagy t\u00fal nehezen gy\u0171jthet\u0151) \u2014 ezt figyelembe kell venni, nem minden adat gy\u0171jthet\u0151 \u00f6ssze \u00e9sszer\u0171 id\u0151n bel\u00fcl.<\/li>\n<li>H\u00e1l\u00f3zati hib\u00e1k: a h\u00e1l\u00f3zattal val\u00f3 munka f\u00e1jdalmas.<\/li>\n<li>Ezek \u00e9l\u0151, val\u00f3s adatok \u2014 sosem tiszt\u00e1k.<\/li>\n<\/ul>\n<p>\nTerm\u00e9szetesen figyelembe kell venni a megadott szempontokat a fejleszt\u00e9s sor\u00e1n. A konkr\u00e9t \u00f3r\u00e1k\/napok tapasztalatt\u00f3l f\u00fcggenek, de l\u00e1that\u00f3, hogy ez egy kifejezetten m\u00e9rn\u00f6ki feladat, \u00e9s nem ig\u00e9nyel k\u00fcl\u00f6n\u00f6sebb mozg\u00e1st a megold\u00e1s \u00e9rdek\u00e9ben \u2014 mindent nagyon j\u00f3l lehet \u00e9rt\u00e9kelni, kidolgozni \u00e9s megval\u00f3s\u00edtani.<\/p>\n<h2>Habr szakaszainak \u00f6sszehasonl\u00edt\u00e1sa<\/h2>\n<p>\nT\u00e9rj\u00fcnk \u00e1t egy \u00e9rdekesebb \u00e9s szokatlanabb esetre, amely a Habr \u00e1raml\u00e1sainak \u00e9s\/vagy szakaszainak \u00f6sszehasonl\u00edt\u00e1s\u00e1ra vonatkozik.<\/p>\n<p>Ellen\u0151rizz\u00fck a neh\u00e9zs\u00e9gi ellen\u0151rz\u0151list\u00e1nkat \u2014 itt, hogy meg\u00e9rts\u00fck minden egyes pontot, m\u00e1r kicsit k\u00eds\u00e9rletezni kell a feladattal.<\/p>\n<ul>\n<li>El\u0151sz\u00f6r azt hiszi, hogy van API, de nincs. Igen, van API a Habr-nak, de az csak nem el\u00e9rhet\u0151 a felhaszn\u00e1l\u00f3k sz\u00e1m\u00e1ra (vagy lehet, hogy egy\u00e1ltal\u00e1n nem m\u0171k\u00f6dik).<\/li>\n<li>Azt\u00e1n egyszer\u0171en elkezdi a HTML elemz\u00e9st \u2014 \u201eimport requests\u201d, mi t\u00f6rt\u00e9nhetett rosszul?<\/li>\n<li>De hogyan is kell elemezni? A leg egyszer\u0171bb \u00e9s leggyakrabban haszn\u00e1lt megk\u00f6zel\u00edt\u00e9s \u2014 ID-n val\u00f3 iter\u00e1l\u00e1s, megjegyezve, hogy nem a leg hat\u00e9konyabb, \u00e9s k\u00fcl\u00f6nb\u00f6z\u0151 eseteket kell kezelni \u2014 itt p\u00e9ld\u00e1ul a val\u00f3s ID-k s\u0171r\u0171s\u00e9ge a l\u00e9tez\u0151 \u00f6sszes ID k\u00f6z\u00f6tt.\n<p><img decoding=\"async\" alt=\"Mi j\u00f6het m\u00e9g a Data Science ter\u00e9n? Adatgy\u0171jt\u00e9s\" src=\"\/wp-content\/uploads\/2020\/07\/2c67fc14f672e92979edd617314210da.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Forr\u00e1s: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/218607\/\">ebben<\/a><\/noindex> cikkek.<\/i><\/li>\n<li>A nyers adatok, amelyek HTML-be vannak burkolva a h\u00e1l\u00f3zaton, f\u00e1jdalmasak. P\u00e9ld\u00e1ul, ha \u00f6ssze szeretn\u00e9 gy\u0171jteni \u00e9s t\u00e1rolni egy cikk \u00e9rt\u00e9kel\u00e9s\u00e9t: kit\u00e9pte a score-t a html-b\u0151l, \u00e9s \u00fagy d\u00f6nt\u00f6tt, hogy sz\u00e1mk\u00e9nt menti el tov\u00e1bbi feldolgoz\u00e1sra.\u00a0\n<p>1) int(score) hib\u00e1t dob: mivel a Habr\u00e1n a m\u00ednusz, p\u00e9ld\u00e1ul a &quot;\u20135&quot; sorban \u2014 ez r\u00f6vid k\u00f6t\u0151jel, nem m\u00ednusz jel (meglep\u0151, ugye?), ez\u00e9rt egy id\u0151 ut\u00e1n fel kellett \u00e9leszteni a parsert egy ilyen sz\u00f6rny\u0171 jav\u00edt\u00e1ssal.<\/p>\n<pre><code class=\"python\">try:\n      score_txt = post.find(class_=&quot;score&quot;).text.replace(u&quot;\u2013&quot;,&quot;-&quot;).replace(u&quot;+&quot;,&quot;+&quot;)\n      score = int(score_txt)\n      if check_date(date):\n        post_score += score\n<\/code><\/pre>\n<p>\nA d\u00e1tumok, pluszok \u00e9s m\u00ednuszok ak\u00e1r nem is l\u00e9tezhetnek (ahogy azt fent a check_date funkci\u00f3b\u00f3l l\u00e1tjuk, ilyen is volt).<\/p>\n<p>2) A nem escaped speci\u00e1lis karakterek \u2014 ezek el\u0151 fognak j\u00f6nni, k\u00e9sz\u00fclni kell r\u00e1juk.<\/p>\n<p>3) A strukt\u00fara t\u00edpust\u00f3l f\u00fcgg\u0151en v\u00e1ltozik.<\/p>\n<p>4) A r\u00e9gi posztoknak lehetnek **furcsa strukt\u00far\u00e1ik**.<\/li>\n<li>L\u00e9nyeg\u00e9ben a hibakezel\u00e9st \u00e9s hogy mi t\u00f6rt\u00e9nhet, \u00e9s mi nem, kezelni kell, \u00e9s nem lehet biztosan megj\u00f3solni, mi fog rosszul menni, \u00e9s milyen tov\u00e1bbi strukt\u00far\u00e1k vannak, \u00e9s mi bukhat el \u2014 csak pr\u00f3b\u00e1lkozni kell, \u00e9s figyelembe kell venni a parsert \u00e1ltal dobott hib\u00e1kat.<\/li>\n<li>Azt\u00e1n azt \u00e9rti meg, hogy p\u00e1rhuzamosan kell parse-olnia, k\u00fcl\u00f6nben egy sz\u00e1lon 30+ \u00f3r\u00e1t is el fog venni (ez val\u00f3j\u00e1ban a m\u00e1r m\u0171k\u00f6d\u0151, egy sz\u00e1las parser fut\u00e1si ideje, amely alszik, \u00e9s nem esik bele semmilyen ban-be). A <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/276383\/\">ebben<\/a><\/noindex> cikkben ez egy id\u0151ben ehhez a s\u00e9m\u00e1hoz vezetett:<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Mi j\u00f6het m\u00e9g a Data Science ter\u00e9n? Adatgy\u0171jt\u00e9s\" src=\"\/wp-content\/uploads\/2020\/07\/9ad1853f3ee2c9321ee9f1a5e3efea7d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00cdme a neh\u00e9zs\u00e9g checklist\u00e1ja:<\/p>\n<ul>\n<li>H\u00e1l\u00f3zaton dolgozni \u00e9s html parse-olni ID-n kereszt\u00fcli iter\u00e1ci\u00f3val \u00e9s ciklussal.<\/li>\n<li>A dokumentumok heterog\u00e9n strukt\u00far\u00e1val rendelkeznek.<\/li>\n<li>Sok hely, ahol a k\u00f3d k\u00f6nnyen \u00f6sszeomolhat.<\/li>\n<li>K\u00f3dot kell \u00edrni ||.<\/li>\n<li>Hi\u00e1nyzik a sz\u00fcks\u00e9ges dokument\u00e1ci\u00f3, k\u00f3dmint\u00e1k \u00e9s\/vagy k\u00f6z\u00f6ss\u00e9g.<\/li>\n<\/ul>\n<p>\nA feladathoz sz\u00fcks\u00e9ges id\u0151 k\u00f6r\u00fclbel\u00fcl 3-5-sz\u00f6r hosszabb lesz, mint az adatok gy\u0171jt\u00e9s\u00e9re a Redditr\u0151l.<\/p>\n<h2>\u00d6sszehasonl\u00edt\u00e1s az Oszt\u00e1lyt\u00e1rsak csoportj\u00e1val.<\/h2>\n<p>\nT\u00e9rj\u00fcnk r\u00e1 a le\u00edrtak k\u00f6z\u00fcl a legtechnikai szempontb\u00f3l \u00e9rdekes esetre. Sz\u00e1momra az volt \u00e9rdekes, hogy els\u0151 pillant\u00e1sra el\u00e9g trivi\u00e1lisnak t\u0171nik, de val\u00f3j\u00e1ban nem az \u2014 amint csak meg\u00e9rinti egy p\u00e1lcik\u00e1val.<\/p>\n<p>Kezdj\u00fck a neh\u00e9zs\u00e9gi checklist\u00e1nkkal, \u00e9s vegy\u00fck \u00e9szre, hogy sok k\u00f6z\u00fcl\u00fck sokkal nehezebbnek bizonyul, mint amilyennek els\u0151re t\u0171nik:<\/p>\n<ul>\n<li>Az API l\u00e9tezik, de majdnem teljesen hi\u00e1nyoznak a sz\u00fcks\u00e9ges funkci\u00f3k.<\/li>\n<li>Bizonyos funkci\u00f3khoz e-mailben kell k\u00e9rni a hozz\u00e1f\u00e9r\u00e9st, teh\u00e1t a hozz\u00e1f\u00e9r\u00e9s kiad\u00e1sa nem azonnali.<\/li>\n<li>Rossz dokument\u00e1ci\u00f3val rendelkezik (kezdj\u00fck azzal, hogy orosz \u00e9s angol kifejez\u00e9sek keverednek mindenhol, ami abszol\u00fat k\u00f6vetkezetlen \u2014 n\u00e9ha egyszer\u0171en csak tal\u00e1lgatni kell, hogy mit akarnak t\u0151l\u00fcnk valahol), r\u00e1ad\u00e1sul a diz\u00e1jnja sem alkalmas az adatok megszerz\u00e9s\u00e9re, p\u00e9ld\u00e1ul, <noindex><a rel=\"nofollow\" href=\"https:\/\/apiok.ru\/dev\/methods\/rest\/discussions\/discussions.getComments\">a sz\u00fcks\u00e9ges funkci\u00f3nak<\/a><\/noindex>.<\/li>\n<li>A dokument\u00e1ci\u00f3ban sz\u00fcks\u00e9ges a munkamenet, de a gyakorlatban nem haszn\u00e1lja \u2014 \u00e9s nincs m\u00f3d az API m\u00f3dok \u00f6sszes r\u00e9szlet\u00e9be belemer\u00fclni, csak tapogatni \u00e9s rem\u00e9lni, hogy valami m\u0171k\u00f6dni fog.<\/li>\n<li>Hi\u00e1nyoznak a p\u00e9ld\u00e1k \u00e9s a k\u00f6z\u00f6ss\u00e9g, az egyetlen t\u00e1masz az inform\u00e1ci\u00f3gy\u0171jt\u00e9s sor\u00e1n egy kis <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/alternativshik\/python-odnoklassniki\">wrapper<\/a><\/noindex> Pythonban (sok p\u00e9lda n\u00e9lk\u00fcl).<\/li>\n<li>A legjobban m\u0171k\u00f6d\u0151 megold\u00e1snak a Selenium t\u0171nik, mivel sok sz\u00fcks\u00e9ges adat z\u00e1r alatt van.<br \/>\n1) Teh\u00e1t jogosults\u00e1gok hiteles\u00edt\u00e9se egy fikt\u00edv felhaszn\u00e1l\u00f3n kereszt\u00fcl (\u00e9s k\u00e9zi regisztr\u00e1ci\u00f3).<\/p>\n<p>2) Azonban a Selenium eset\u00e9ben nincs garancia a helyes \u00e9s ism\u00e9telhet\u0151 m\u0171k\u00f6d\u00e9sre (legal\u00e1bbis az ok.ru eset\u00e9ben bizonyosan).<\/p>\n<p>3) Az ok.ru weboldal JavaScript hib\u00e1kat tartalmaz, \u00e9s n\u00e9ha furcs\u00e1n \u00e9s k\u00f6vetkezetlen\u00fcl viselkedik.<\/p>\n<p>4) Foglalkozni kell a lapoz\u00e1ssal, az elemek bet\u00f6lt\u00e9s\u00e9vel stb.<\/p>\n<p>5) Az API hib\u00e1kat, amelyeket a wrapper tartalmaz, \u00fcgyesen kell kezelni, p\u00e9ld\u00e1ul \u00edgy (k\u00eds\u00e9rleti k\u00f3d egy darabja):<\/p>\n<pre><code class=\"python\">def get_comments(args, context, discussions):\n    pause = 1\n    if args.extract_comments:\n        all_comments = set()\n#makes sense to keep track of already processed discussions\n        for discussion in tqdm(discussions): \n            try:\n                comments = get_comments_from_discussion_via_api(context, discussion)\n            except odnoklassniki.api.OdnoklassnikiError as e:\n                if &quot;NOT_FOUND&quot; in str(e):\n                    comments = set()\n                else:\n                    print(e)\n                    bp()\n                    pass\n            all_comments |= comments\n            time.sleep(pause)\n        return all_comments\n<\/code><\/pre>\n<p>\nA kedvenc hib\u00e1m a k\u00f6vetkez\u0151 volt:<\/p>\n<p><code>OdnoklassnikiError(&quot;Hiba (k\u00f3d: 'None', le\u00edr\u00e1s: 'HTTP hiba', m\u00f3dszer: 'discussions.getComments', param\u00e9terek: \u2026)&quot;)<\/code><\/p>\n<p>6) V\u00e9g\u00fcl a Selenium + API v\u00e1ltozat t\u0171nik a legracion\u00e1lisabb megold\u00e1snak.<\/li>\n<li>\u00c1llapot meg\u0151rz\u00e9s\u00e9re \u00e9s a rendszer \u00fajraind\u00edt\u00e1s\u00e1ra van sz\u00fcks\u00e9g, sok hiba kezel\u00e9s\u00e9re, bele\u00e9rtve a weboldal k\u00f6vetkezetlen viselked\u00e9s\u00e9t \u2014 r\u00e1ad\u00e1sul ezek a hib\u00e1k meglehet\u0151sen nehezen elk\u00e9pzelhet\u0151k (ha nem \u00edr d\u00edsz\u00edt\u00e9seket szakmai szinten, term\u00e9szetesen).<\/li>\n<\/ul>\n<p>\nA feladathoz sz\u00fcks\u00e9ges id\u0151 felt\u00e9telezett becsl\u00e9se 3-5-sz\u00f6r magasabb lesz, mint az adatok gy\u0171jt\u00e9se a Habr\u00f3l. Annak ellen\u00e9re, hogy a Habr eset\u00e9ben HTML elemz\u00e9ssel leplezz\u00fck a k\u00f6zvetlen megk\u00f6zel\u00edt\u00e9st, m\u00edg az OK eset\u00e9ben kritikus helyeken az API-val dolgozhatunk.<\/p>\n<h2>K\u00f6vetkeztet\u00e9sek<\/h2>\n<p>\nB\u00e1rhogy is k\u00e9rik t\u0151led a \"helysz\u00edni\" id\u0151becsl\u00e9st (hiszen ma m\u00e1r tervez\u00e9s zajlik!), a nagyobb adatfeldolgoz\u00f3 modulk\u00e9nt az id\u0151tartamot szinte soha nem lehet pontosan meg\u00edt\u00e9lni a feladatparam\u00e9terek elemz\u00e9se n\u00e9lk\u00fcl. <\/p>\n<p>Ha egy kicsit filozofikusabb szempontb\u00f3l n\u00e9zz\u00fck, az agile id\u0151becsl\u00e9si strat\u00e9gi\u00e1k j\u00f3l alkalmazhat\u00f3k m\u00e9rn\u00f6ki feladatokhoz, de a k\u00eds\u00e9rleti \u00e9s bizonyos \u00e9rtelemben \"kre\u00e1l\u00f3\" \u00e9s kutat\u00f3i feladatokkal, amelyek kev\u00e9sb\u00e9 kisz\u00e1m\u00edthat\u00f3k, neh\u00e9zs\u00e9gek ad\u00f3dnak, mint az itt t\u00e1rgyalt p\u00e9ld\u00e1k eset\u00e9ben. <\/p>\n<p>Term\u00e9szetesen az adatok \u00f6sszegy\u0171jt\u00e9se csup\u00e1n egy l\u00e1tv\u00e1nyos p\u00e9lda \u2014 \u00e1ltal\u00e1ban ez a feladat hihetetlen\u00fcl egyszer\u0171nek \u00e9s technikailag nem bonyolultnak t\u0171nik, \u00e9s \u00e9ppen a r\u00e9szletekben rejt\u0151zik a probl\u00e9ma. Ezen a feladaton kereszt\u00fcl bemutathat\u00f3 a lehets\u00e9ges vari\u00e1ci\u00f3k teljes spektruma, ami elromolhat, \u00e9s mennyire elh\u00faz\u00f3dhat a munka. <\/p>\n<p>Ha gyorsan \u00e1tfutunk a feladat jellemz\u0151in tov\u00e1bbi k\u00eds\u00e9rletek n\u00e9lk\u00fcl, akkor a Reddit \u00e9s az OK hasonl\u00f3nak t\u0171nik: van API, Python wrapper, de l\u00e9nyeg\u00e9ben hatalmas a k\u00fcl\u00f6nbs\u00e9g. Ha ezek alapj\u00e1n \u00edt\u00e9lj\u00fck meg, akkor a Habr parsing nehezebbnek t\u0171nik, mint az OK \u2014 a gyakorlatban viszont \u00e9ppen ellenkez\u0151leg, \u00e9s ezt egyszer\u0171 k\u00eds\u00e9rletekkel lehet kider\u00edteni a feladatparam\u00e9terek elemz\u00e9s\u00e9re.<\/p>\n<p>Szem\u00e9lyes tapasztalataim szerint a legjobban m\u0171k\u00f6d\u0151 megk\u00f6zel\u00edt\u00e9s a becs\u00fclt id\u0151, amelyre sz\u00fcks\u00e9g van a kezdeti elemz\u00e9shez \u00e9s az els\u0151 egyszer\u0171 k\u00eds\u00e9rletekhez, a dokument\u00e1ci\u00f3 olvas\u00e1s\u00e1hoz \u2014 ezek biztos\u00edtj\u00e1k a pontos becsl\u00e9st az eg\u00e9sz munk\u00e1ra. Az elterjedt agile m\u00f3dszertan szempontj\u00e1b\u00f3l k\u00e9rlek, hozz l\u00e9tre egy jegyet az \"\u00fatk\u00f6zbeni param\u00e9terek \u00e9rt\u00e9kel\u00e9s\u00e9hez\", amely alapj\u00e1n meg tudom mondani, hogy mi lehets\u00e9ges a \"sprintek\" keretein bel\u00fcl, \u00e9s pontosabb becsl\u00e9st adhatok minden feladatra.<\/p>\n<p>Ez\u00e9rt a legjobbnak t\u0171n\u0151 \u00e9rvet a \"nem technikai\" szakemberek sz\u00e1m\u00e1ra az mutatja meg, hogy mennyire v\u00e1ltozhat az id\u0151 \u00e9s az er\u0151forr\u00e1sok a m\u00e9g \u00e9rt\u00e9kel\u00e9sre v\u00e1r\u00f3 param\u00e9terek f\u00fcggv\u00e9ny\u00e9ben.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/ruvds.com\/ru-rub?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=param&amp;utm_content=datascience1#order\"><img decoding=\"async\" alt=\"Mi j\u00f6het m\u00e9g a Data Science ter\u00e9n? Adatgy\u0171jt\u00e9s\" src=\"\/wp-content\/uploads\/2020\/07\/2ca567a078c8500d37dfcf982e76252c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<br \/>Forr\u00e1s: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/510944\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 100500 \u043a\u0443\u0440\u0441\u043e\u0432 \u043f\u043e Data Science \u0438 \u0434\u0430\u0432\u043d\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0434\u0435\u043d\u0435\u0433 \u0432 Data Science \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u043a\u0443\u0440\u0441\u0430\u043c\u0438 \u043f\u043e Data Science (\u0437\u0430\u0447\u0435\u043c \u043a\u043e\u043f\u0430\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0434\u0430\u0432\u0430\u0442\u044c \u043b\u043e\u043f\u0430\u0442\u044b?). \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043c\u0438\u043d\u0443\u0441 \u044d\u0442\u0438\u0445 \u043a\u0443\u0440\u0441\u043e\u0432 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u043d\u0438 \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043e\u0431\u0449\u0435\u0433\u043e \u0441 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u043e\u0439: \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0434\u0430\u0441\u0442 \u0432\u0430\u043c \u0447\u0438\u0441\u0442\u044b\u0435, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043d\u0443\u0436\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":89207,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-89206","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/chto-mozhet-pojti-ne-tak-s-data-science-sbor-dannyh\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0427\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0439\u0442\u0438 \u043d\u0435 \u0442\u0430\u043a \u0441 Data Science? \u0421\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/chto-mozhet-pojti-ne-tak-s-data-science-sbor-dannyh\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-07-20T05:41:57+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-20T05:41:57+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Mi mehet rosszul a Data Science-szel? Adatgy\u0171jt\u00e9s | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/chto-mozhet-pojti-ne-tak-s-data-science-sbor-dannyh","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0427\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0439\u0442\u0438 \u043d\u0435 \u0442\u0430\u043a \u0441 Data Science? \u0421\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 | ProHoster","og:url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/chto-mozhet-pojti-ne-tak-s-data-science-sbor-dannyh","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-07-20T05:41:57+00:00","article:modified_time":"2020-07-20T05:41:57+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"89206","title":null,"description":null,"keywords":null,"keyphrases":{"focus":[],"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 10:51:09","updated":"2026-08-11 12:50:12","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/89206","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=89206"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/89206\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/89207"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=89206"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=89206"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=89206"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}