競銬ãã¡ã³ãªãèªäœã®AIã§åã¡éЬãäºæž¬ããŠã¿ãããšæããŸãããã
ãã®èšäºã§ã¯ãPythonãçšããnetkeibaã®ã¹ã¯ã¬ã€ãã³ã°æ¹æ³ã«ã€ããŠãããããã解説ããŸãã
ã¹ã¯ã¬ã€ãã³ã°ãšã¯ã€ã³ã¿ãŒãããäžã®ããŒã¿ãèªåã§ååŸããè¡çºã§ãã
ã¹ã¯ã¬ã€ãã³ã°ã®æ¹æ³ãPythonåå¿è åãã«ããªã詳ãã解説ããŠããŸãã®ã§ãäžçŽè ã«ã¯åé·ãªå 容ãããããŸããã
ãŸãã競銬ããŒã¿ã®è§£æã§ã¯Pythonã®ããã°ã©ãã³ã°ã¹ãã«ãå¿ é ã«ãªããŸãã
Pythonã®åºæ¬ãå®å šã«ã¯èº«ã«ã€ããŠããªãæ¹ã¯ã以äžã®æ¬ã§å匷ããã®ãããããã§ãã
ç¹ã«ãPythonã䜿ã£ãŠæ©æ¢°åŠç¿ã®çè«ã«ã€ããŠåŠã³ããæ¹ã¯ãã¡ãã®æ¬ãããããã§ãã
ã©ã€ãã©ãªã®ã€ã³ã¹ããŒã«
Pythonã®ã©ã€ãã©ãªã¯requestsãšBeautifulSoupã䜿çšããŸãã
æåã«ãããã®ã©ã€ãã©ãªãã€ã³ã¹ããŒã«ããŸãã
windowsã®å Žåã¯ã³ãã³ãããã³ãããmacã®å Žåã¯ã¿ãŒããã«ã«ä»¥äžã®ããã«å ¥åããŠEnterãæŒããŸãã
pip3 install requests
以äžã®ããã«è¡šç€ºãããã°æåã§ãã

åæ§ã®æäœã§å¿ èŠãªäžèšã©ã€ãã©ãªãã€ã³ã¹ããŒã«ããŠãã ããã
pip3 install beautifulsoup4
HTMLã«ã€ããŠ
å®éã«netkeibaããããŒã¿ãæœåºããŠã¿ãŸãããã
äžèšã®ãµã€ããGoogle Chromeã§éããŠäžããã
https://db.netkeiba.com/race/202003010302
詊ãã«ãã¯ã€ãã®æãæ»ãããæœåºããŠã¿ãŸãããã
ãµã€ãã®äžã®æ¹ã«æãæ»ãäžèЧããããŸãã
ãã®äžããäžå³ã®èµ€ç·ã§å²ã£ãã¯ã€ãã®æãæ»ãæ å ±ãPythonã䜿ã£ãŠåãåºããŸãã

windowså Žåã¯ãcontrol + shift + iããmacã®å Žåã¯ãcommand + option + iããæŒããŠäžããããããšã以äžã®ãããªç»é¢ãç«ã¡äžãããŸãã

ããã¯ããããããŒããŒã«ãšåŒã°ãããã®ã§ãã
ããããããŒããŒã«ãéãããšã§ããµã€ãã®äžèº«ã«é¢ããæ å ±ãè©°ãŸã£ãHTMLãèŠãããšãã§ããŸãã
HTMLäžã§ãcommand + fããæŒããšã以äžã®ãããªæ€çŽ¢ããŒãåºã§ããã®ã§ãããã«ãã¯ã€ãããšå ¥åããŠEnterãæŒããŸãã
ãããšäžå³ã®ããã«ã¯ã€ãã«é¢ããHTMLãèŠãããšãã§ããŸãã

ãã®ã1-11ãã§ããšããã”560″ããšãã£ãæ å ±ãPythonã§ååŸããŠãããŸãã
ããã§HTMLã®åºç€ç¥èã«ã€ããŠè§ŠããŠãããŸãããã
HTMLãšã¯ãµã€ããæåã§èšè¿°ãããã®ã§ãã
éèŠãªç¹ã¯ãHTMLã¯ãèŠçŽ ãã§æ§æãããŠãããããããã®èŠçŽ ã¯ã屿§ããå«ãã§ãããšèšãããšã§ãã
å çšã®äŸã§èšããšãèŠçŽ ãšå±æ§ã¯äžå³ã®ããã«å¯Ÿå¿ããŠããŸãã

èŠçŽ ã¯ã<th>ãã®ãããªéå§ã¿ã°ãšã</th>ãã®ãããªçµäºã¿ã°ã§å²ãŸããŠããŸãããŸããã®å Žåã®èŠçŽ åã¯ãthããšãªããŸãã
屿§ã¯éå§ã¿ã°ã®äžã«ãclass = “wide”ãã®ããã«èšè¿°ãããŸãããã®å Žåããclass屿§ã”wide”ããšãªããŸãã
Pythonã§ã¯èŠçŽ ã屿§ãããšã«æ å ±ãæœåºããŸãã
äŸãã°å çšã®ã”560″ããååŸããããšãèããŠã¿ãŸããããäžå³ã®ããã«èŠçŽ åããtdãã§class屿§ãã”txt_r”ãã®èŠçŽ ãååŸããã°ãããšããããšã«ãªããŸãã

å ·äœçãªã³ãŒãã¯äžèšã§ãã
PythonãéããŠFileããNew FileãçæããŸãã

ãšãã£ã¿ãéãã®ã§ãäžèšãµã³ãã«ã³ãŒããã³ããããŠäžããã
ãRunãã®äžã®ãRun ModuleããæŒãããšã§ã³ãŒããå®è¡ããŸãã

å çšã®ã³ãŒãã§ã¯ããsoup.find_all(“td”,class_=’txt_r’)ãã®éšåã§ãèŠçŽ åããtdãã§class屿§ãã”txt_r”ãã®èŠçŽ ãååŸããŠããŸãã
ã€ãŸãããfind_allãã®ç¬¬ïŒåŒæ°ã«èŠçŽ åãæå®ãã第ïŒåŒæ°ã«å±æ§ãæå®ããããšã§ãHTMLããèŠçŽ åãšå±æ§ãäžèŽããèŠçŽ ãå šãŠæœåºããŠãããŸãã
å®è¡ãããšä»¥äžã®ãããªçµæã«ãªããŸãã

ãsoup.find_all(“td”,class_=’txt_r’)ãã§ã¯ãèŠçŽ åããtdãã§class屿§ãã”txt_r”ãã®èŠçŽ ãå šãŠæœåºãããããããããã®åè£ã衚瀺ãããŠããŸãã
ãããŠãäžå³ã®èµ€ã§å²ã£ãããã«ç¢ºãã«ã”560″ããæœåºã§ããŠããŸãã
ã§ãããããã ãšæµç³ã«åè£ãå€ãããã®ã§ãå¥ã®èŠçŽ åã屿§ã§æœåºããããšããã§ãã
ã¯ã€ãåšèŸºã®èŠçŽ ãèŠãŠã¿ããšãäžå³èµ€ç·ã§ç€ºããã㪔è¯ãã”ãªèŠçŽ ããããŸããã
(æãæ»ããšããåèªã¯ãµã€ãå ããã»ã©äœ¿ãããŠããªããããªåèªãªã®ã§ãåè£ãå°ãªãã§ããããšããæå³ã§ã®”è¯ãã”ã§ã)

äžå³ã®èµ€ã§å²ã£ãéšåã¯ãèŠçŽ åããtableãã§sammary屿§ãã”æãæ»ã” ãã®èŠçŽ ã§ãããããPythonã§ãæœåºããŸãããã
ãã®èŠçŽ åããtableãã§sammary屿§ãã”æãæ»ã” ãã®èŠçŽ ãæœåºããã³ãŒãã¯ãsoup.find_all(“table”,summary=’æãæ»ã’)ãã§ããå®è¡ãããšä»¥äžã®ããã«åºåãããŸãã

å ã»ã©ãããããããããæœåºã§ããŠããŸããã
ã²ãšãŸããã€ã³ã¿ãŒãããäžããPythonã«æ å ±ãåãåºãæµããæŽããã§ããããïŒ
次ãããããã«è©³ããæ å ±ãåãåºããŠãããŸãã
欲ããæ å ±ãã¹ã¯ã¬ã€ãã³ã°ãã
å çšããã£ãããšã¯ã€ãã®æãæ»ãæ å ±ãå«ãã ããŒã¿ãååŸã§ããŸãããããããããã«æ å ±ãéžå¥ããŠãã¯ã€ãã®æãæ»ãããååŸããŠã¿ãŸãããã
ãŸãåãã«ãPythonã§ã¯åãæèããããšãéèŠã§ãããšããããšã匷調ããŠãããŸãã
ä»åã§èšããšããsoup.find_all()ãã䜿ããšãbs4.element.ResultSetããšããåã§ããŒã¿ãè¿ããšããããšãèŠããŠãããŠãã ããã
ãã®ãbs4.element.ResultSetããšã¯ãbs4.element.TagãåãèŠçŽ ãšãããªã¹ãã¿ãããªã€ã¡ãŒãžã§ãã
ãbs4.element.ResultSetããšãbs4.element.Tagãã¯åãç°ãªãã®ã§ãåœç¶äœ¿ããã¡ãœãããç°ãªããŸãã
ãbs4.element.ResultSetããšãbs4.element.Tagãã®éããæèããŠã³ãŒããæžããªããšãšã©ãŒãåããŸããã®ã§æ³šæããŸãããã
ããŠãããããã¯ã€ãã®æãæ»ããæœåºããŸã
å è¿°ã®ãsoup.find_all(“table”,summary=’æãæ»ã’)ãã¯ãbs4.element.ResultSetãåã§ãã
ããããªã¹ããšåããããªæäœã§ããsoup.find_all(“table”,summary=’æãæ»ã’)[1]ããšãããšãbs4.element.Tagãåãè¿ããŸãã
ãããŠãbs4.element.Tagãåã«å¯ŸããŠã¯ã.contentsããšããã¡ãœããã䜿çšå¯èœã§ããbs4.element.Tagãåããlistãåã«å€æã§ããŸãã
ãã®å€æåŸã®listã®èŠçŽ ããbs4.element.Tagãåã«ãªã£ãŠããŠãããããšãã£ãå ·åã«ãbs4.element.Tagãåãšãlistãå ãè¡ãæ¥ããªããæ¬²ããããŒã¿ã«èŸ¿ãçããŸãããã
ããŠãä»åã®ç®çã¯ã¯ã€ãã®æãæ»ããååŸããããšã§ãããå®éã«ãã£ãŠã¿ãŠãã ããããšãã£ãŠãé£ãããšæããŸãã®ã§ãçãã¯ä»¥äžã§ãã

ãã€ã³ãã¯ãåãæèããããšãã«å°œããŸããåã®ç¢ºèªã¯ãtype()ãã䜿ããŸãã
ãã®ãããªæµãã§æ¬²ããæ å ±ãæœåºããŸãã
csvãã¡ã€ã«ã«ä¿åãã
ãããŸã§ã§æ¬²ããæ å ±ãã€ã³ã¿ãŒãããäžããåãåºãæ¹æ³ã解説ããŸããã
次ã«ãååŸããæ å ±ã䜿ãããã圢ã§ä¿åããŠã¿ãŸãããã
ãŸããã¯ã€ãã ãã§ã¯å³æ°ãªãã®ã§ãååãè€åãäžé£åãšãã£ãæãæ»ããæœåºããŠã¿ãŸãããã
åã³PythonãéããŠFileããNew FileãçæããŸãã

ãšãã£ã¿ãéãã®ã§ãããã«äžèšã®ã³ãŒããã³ããããŠäžããã
defã®éšåã§é¢æ°ãäœæããŠããŸãããã³ãŒããçããã以å€ç¹ã«å¹æã¯ãªãã§ãã
äžèšã³ãŒãã§ã¯ããbeautifulSoupãã§åã£ãŠããæ å ±ããcontentsããçšããŠããã«æœåºããŠããpayBackListãã«ä¿åããŠãããŸãã
ãRunãã®äžã®ãRun ModuleããæŒãããšã§ã³ãŒããå®è¡ããŸããäžå³ã®ããã«IDLE Shellãç«ã¡äžãããŸãã
ããŸããã£ããã確èªããŠã¿ãŸããããäžå³ã®ããã«ãpayBackListããšæã¡èŸŒãã§EnterãæŒããŸãã以äžã®ããã«è¡šç€ºãããã°æåã§ãã

ãpayBackListãã®äžã«éЬçªãšæãæ»ãæ å ±ãèŠåçã«æ ŒçŽãããŠãŸããã
ã€ãã§ã«éЬåãéšæã®æ å ±ããŸãšããŠã¿ãŸããããçè ãäœæããã³ãŒããåŸã§èŒããŸãã
欲ããæ å ±ãåãçµããããcsvãã¡ã€ã«ã«ä¿åããŠã¿ãŸãããã
ãŸããcsvãã¡ã€ã«ãšããŠä¿åããããã«ã©ã€ãã©ãªãcsvããã€ã³ããŒãããŸãã
ãcsvãã¯ããã©ã«ãã§å ¥ã£ãŠããã©ã€ãã©ãªã§ãããããpip3ã§ã€ã³ã¹ããŒã«ããå¿ èŠã¯ãããŸããã
以äžã®ã³ãŒããå®è¡ãããšãæå®ããå Žæã«ç«¶éЬããŒã¿ãcsvãã¡ã€ã«ãšããŠä¿åããŸãã
ãã ãã101è¡ç®ã®with open()ã®ç¬¬ïŒåŒæ°ã®éšåã«ãèªèº«ã®ä¿åå ã®ãã¹ãšãã¡ã€ã«åãèšè¿°ããŠãã ããã
ãã¹åã®èª¿ã¹æ¹ã¯windowsãšmacã§ç°ãªããŸããwindowsã®å Žåã¯ããShiftããæŒããªãããã¹åã調ã¹ãããã¡ã€ã«ãå³ã¯ãªãã¯ããŠããã¹ã®ã³ããŒããã¯ãªãã¯ãããšãã¹åãã³ããŒã§ããŸããmacã®å Žåã¯ããoptionããæŒããªãããã¹åã調ã¹ãããã¡ã€ã«ãå³ã¯ãªãã¯ããŠãâ¯â¯â¯â¯ã®ãã¹åãã³ããŒããã¯ãªãã¯ãããšãã¹åãã³ããŒã§ããŸãã
ïŒäžèšã³ãŒãã¯2022幎1æ5æ¥æç¹ã§æå¹ã§ããããšã確èªããŸãããïŒ
ããŸããã£ãŠããã°ãèªèº«ã§ãã¹ãèšå®ããå Žæã«csvãã¡ã€ã«ãåºåãããŸãã
csvãã¡ã€ã«ãèªã¿èŸŒã
å çšä¿åããcsvãã¡ã€ã«ãèªã¿èŸŒãã§ã¿ãŸãããã
csvãã¡ã€ã«ã®èªã¿èŸŒã¿ã«ã¯pandasãšããã©ã€ãã©ãªã䜿çšããŸãã
ãã€ãéããã¿ãŒããã«ã«ãpip3 install pandasããšå ¥åããŠã€ã³ã¹ããŒã«ããŸãããã
次ã«ãäžå³ã®ããã«ãimport pandasããšèšè¿°ããŠEnterãæŒããŠäžããã
ãã®åŸãäžå³ã®ããã«ãpandas.read_csv(‘/XXXX/XXX.csv’,encoding=”SHIFT-JIS”,header=None)ããšå ¥åããŠEnterãæŒããŸãã
ããã§ãã’/XXXX/XXX.csv’ãã®éšåã«ã¯ãèªèº«ã®ãã¹ãšãã¡ã€ã«åãèšè¿°ããŠãã ããã(å çšcsvãçæãããšãã«äœ¿ã£ããã®ãã³ããã§OKã§ãã)
以äžã®ããã«åºåãããã°æåã§ãã

ãã¡ããš1ã¬ãŒã¹åã®ç«¶éЬããŒã¿ãä¿åã§ããŠããŸããã
ãã®æäœãç¹°ãè¿ãããšã§ç«¶éЬããŒã¿ãåéã§ããŸãã
ããããªãããæ¯å¹Žéå¬ãããŠããçŽ3000ã¬ãŒã¹ãæ¯åURLãæžãçŽããŠã¹ã¯ã¬ã€ãã³ã°ããã®ã¯çŸå®çã§ã¯ãªãã§ããããããã
ããã§foræ§æã䜿ãããšã§1幎åã®ã¬ãŒã¹çµæããŸãšããŠã¹ã¯ã¬ã€ãã³ã°ããæ¹ãããããã§ãã
1幎åããŸãšããŠã¹ã¯ã¬ã€ãã³ã°
netkeibaã®1幎åã®ã¬ãŒã¹çµæãã¹ã¯ã¬ã€ãã³ã°ããããã«ã¯ãnetkeibaã®URLã®ä»çµã¿ãçè§£ããå¿ èŠããããŸãã
netkeibaã§ã¯URLã®æåŸã«12æ¡ã®æ°åãã€ããŠããããããç¹å®ã®ã¬ãŒã¹ã«å¯Ÿå¿ããŠããŸãã
å ·äœçã«ã¯ä»¥äžã®ãããªå¯Ÿå¿ã«ãªã£ãŠããŸãã

æåã®4ã€ã®æ°åã西æŠã次ã®2ã€ã®æ°åãç«¶éŠ¬å Žãæ¬¡ã®2ã€ã®æ°åã第äœåéå¬ããæ¬¡ã®ïŒã€ã®æ°åãéå¬äœæ¥ç®ããæåŸã®2ã€ã®æ°åãäœã¬ãŒã¹ãã«å¯Ÿå¿ããŠããŸãã
ç¹ã«ç«¶éŠ¬å Žãšæ°åã®å¯Ÿå¿ã¯ä»¥äžã®éãã§ãã
01ïŒæå¹ã02ïŒåœé€šã03ïŒçŠå³¶ã04ïŒæ°æœã05ïŒæ±äº¬ã06ïŒäžå±±ã07ïŒäžäº¬ã08ïŒäº¬éœã09ïŒéªç¥ã10ïŒå°å
ãã®æ°åãPythonã®Foræ§æã§ã«ãŒããããããšã§1幎åã®ã¬ãŒã¹ããŒã¿ããŸãšããŠã¹ã¯ã¬ã€ãã³ã°ããŸãã
ãµã³ãã«ã³ãŒãã¯ä»¥äžã«ãªããŸãã
äžèšã³ãŒãã¯2022幎1æ5æ¥æç¹ã§æå¹ã§ããããšã確èªããŸããã
äžèšã³ãŒãã®äœ¿ãæ¹ã説æããããŸãã
ãŸãPythonãèµ·åããŠãFileããNew Fileã§ãšãã£ã¿ãéããŠãäžèšã³ãŒããã³ããããŠäžããã
次ã«5è¡ç®ã®ã#西æŠãå ¥åãã®éšåã§è¥¿æŠãæå®ããŠãã ãããäŸãã°ãyear = “2013”ããšãããšã2013幎ã®ã¬ãŒã¹çµæããŸãšããŠååŸã§ããŸãã
ãŸã150è¡ç®ã§ä¿åå ã®ãã¹ãæå®ããŠãã ããããµã³ãã«ã®ãŸãŸã§ããšãUsersã®äžã«2020.csvãçæãããŸãã
æåŸã«ãRunããããRun Moduleããã¯ãªãã¯ãããšã§ã³ãŒããå®è¡ããŸãã
28ãã36è¡ç®ã®ãwãzãyãxããããããããç«¶éŠ¬å Žãéå¬ãæ¥ãã¬ãŒã¹ãã«å¯Ÿå¿ããŠããŸããããããforæ§æã§æŽæ°ããŠããŸãã
鲿ã衚瀺ããããã«142è¡ç®ã§ã第äœåéå¬ãäœç«¶éŠ¬å Žãäœæ¥ç®ãäœã¬ãŒã¹ç®ãã¹ã¯ã¬ã€ãã³ã°ãããã衚瀺ããããã«æå®ããŠããŸãã
ãŸãã³ãŒãã®éäžã§ãtryããšãExceptãã䜿çšããŠããŸãããããã¯ãšã©ãŒå¯Ÿçã«æå¹ã§ãã
çè ã®ç°å¢ã§ããšã2022幎1ææç¹ã§ã¯äžèšã³ãŒãã§ã¹ã¯ã¬ã€ãã³ã°ã§ããŸãããç°å¢ãããŒãžã§ã³ã®æŽæ°ã§ãã°ãåºããããããŸããã
ãã®éã¯ãã¡ããšåå ãçªãæ¢ããŠããtryãexceptããªã©ã䜿ãã€ã€ãããã°ããŠãã ããã
æåããŠããããæå®ãããã¹ã«csvãã¡ã€ã«ãåºåãããŸãã
詊ãã«keynoteãªã©ã§ã§éããŠã¿ãŠãã ããã以äžã®ããã«ããŒã¿ãå ¥ã£ãŠããã°æåã§ãã

以äžã§netkeibaããã¬ãŒã¹çµæãã¹ã¯ã¬ã€ãã³ã°ããæ¹æ³ã®è§£èª¬ãçµäºããŸãã
é·ãéããç²ãæ§ã§ããã
2022幎6æ15æ¥è¿œèš
äžèšã³ãŒãã§ãã°ãåºããšèšãå ±åããããŸããã
2022幎ã§ããæ©èœããããšã確ãããŠããŸãããã以äžã®ã³ãŒãã詊ããŠã¿ãŠãã ããã
ãªãäžèšã³ãŒãã¯äžå€®ç«¶éЬã§ã®ã¿äœ¿çšã§ããŸãã
å°æ¹ç«¶éЬãã¹ã¯ã¬ã€ãã³ã°ããæ¹æ³ã¯ãã¡ãã®èšäºã§è§£èª¬ããŠããŸãã