¥¦¥§¥Ö¥µ¥¤¥È¤Î¾ðÊó¤ò¼«Æ°¤Ç¼èÆÀ¤¹¤ë¥¦¥§¥Ö¥¹¥¯¥ì¥¤¥Ô¥ó¥°¤Ï¡¢¾ðÊó¼ý½¸¤ò¥×¥í¥°¥é¥à¤ËǤ¤»¤Æ»þ´Ö¤ÎÀáÌ󤬤Ǥ­¤ë¤Û¤«¡¢Ëè²óƱ¤¸Áàºî¤òÀµ³Î¤Ë¹Ô¤¨¤ë¤Î¤Ç¥Ò¥å¡¼¥Þ¥ó¥¨¥é¡¼¤ÎËɻߤˤâÌòΩ¤Á¤Þ¤¹¡£¤½¤ó¤Ê¥¦¥§¥Ö¥¹¥¯¥ì¥¤¥Ô¥ó¥°¤òJavaScript¤Ç¹Ô¤¦ÊýË¡¤Ë¤Ä¤¤¤Æ¡¢¥¨¥ó¥¸¥Ë¥¢¤ÎPavel Prokudin»á¤¬¥µ¥ó¥×¥ë¥³¡¼¥É¤òÍѤ¤¤Æ²òÀ⤷¤Æ¤¤¤Þ¤¹¡£

Web scraping with JS | Analog Forest

https://qoob.cc/web-scraping/

¥¦¥§¥Ö¥¹¥¯¥ì¥¤¥Ô¥ó¥°¤Î¥Ä¡¼¥ë·²¤È¤·¤Æ¤Ï¡¢¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤ËPython 3¡¢HTML¤Î¼èÆÀ¤ËRequests¥é¥¤¥Ö¥é¥ê¡¢HTML¤Î²òÀϤËBeautiful Soup¤¬¤è¤¯ÍѤ¤¤é¤ì¤Þ¤¹¡£¤·¤«¤·¡¢¤³¤Î¥Ä¡¼¥ë·²¤Ë¤è¤ë¥¹¥¯¥ì¥¤¥Ô¥ó¥°¼êË¡¤Ï¿ôǯÁ°¤«¤éÊѲ½¤¬¤Ê¤¤¤³¤È¤Ë²Ã¤¨¡¢JavaScript¥¨¥ó¥¸¥Ë¥¢¤Ë¤È¤Ã¤Æ¤ÏÍøÍÑ¥³¥¹¥È¤¬¹â¤¤¤ÈProkudin¤Ï»ØÅ¦¡£¤³¤ì¤«¤éJavaScript¤Ç¥¦¥§¥Ö¥¹¥¯¥ì¥¤¥Ô¥ó¥°¤ò¤·¤¿¤¤¿Í¤Î¤¿¤á¤Î¥É¥­¥å¥á¥ó¥È¤òÀ°È÷¤·¤¿¤¤¤ÈProkudin»á¤Ï¸ì¤Ã¤Æ¤¤¤Þ¤¹¡£

¢¡¥Ç¡¼¥¿¤ò»öÁ°³Îǧ¤¹¤ë

¤Þ¤º¤Ï¥¦¥§¥Ö¥¹¥¯¥ì¥¤¥Ô¥ó¥°¤ò¹Ô¤¦Á°¤Ë¡Ö¥¦¥§¥Ö¥¹¥¯¥ì¥¤¥Ô¥ó¥°¤¬É¬Íפ«¤É¤¦¤«¡×¤ò³Îǧ¤·¤Æ¤ª¤¯¤Ù¤­¤À¤ÈProkudin»á¤Ï¥¢¥É¥Ð¥¤¥¹¤·¤Æ¤¤¤Þ¤¹¡£ºÇ¶á¤Î¥¦¥§¥Ö¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ÏHTML¤Ë¥Ç¡¼¥¿¤òľÀܵ­½Ò¤¹¤ë¤Î¤Ç¤Ï¤Ê¤¯¡¢¹½Â¤²½¤µ¤ì¤¿¥Ç¡¼¥¿¤òưŪ¤ËÀ¸À®¤·¤Æ¤¤¤ë¤³¤È¤¬Â¿¤¤¤¿¤á¡¢¤½¤â¤½¤â¥¦¥§¥Ö¥¹¥¯¥ì¥¤¥Ô¥ó¥°¤ò¤»¤º¤È¤â¥Ç¡¼¥¿¤ò¼èÆÀ¤Ç¤­¤Æ¤·¤Þ¤¦¤³¤È¤¬Â¿¤¤¤È¤Î¤³¤È¡£



¢¡¥Ç¡¼¥¿¤ò¼èÆÀ¤¹¤ë

¥¦¥§¥Ö¥¹¥¯¥ì¥¤¥Ô¥ó¥°¤¬É¬Íפʾì¹ç¤Ï¡¢¤Þ¤º¥¦¥§¥Ö¥µ¥¤¥È¤«¤éHTML¥Ç¡¼¥¿¤½¤Î¤â¤Î¤ò¼èÆÀ¤·¤Þ¤¹¡£Node.js¤ÎHTTPSɸ½à¥â¥¸¥å¡¼¥ë¤ò¤½¤Î¤Þ¤ÞÍøÍѤ¹¤ë¤³¤È¤â²Äǽ¤Ç¤¹¤¬¡¢Prokudin»á¤ÏÈ󯱴ü½èÍý¤ËÂбþ¤·¤Æ¤¤¤ënode-fetch¤ò¿ä¾©¡£°Ê²¼¤Î¥³¡¼¥É¤Ç¤Ï¥µ¥Ã¥«¡¼¤Î»î¹ç·ë²Ì¤Ê¤É¤Î¾ðÊó¤òÄ󶡤·¤Æ¤¤¤ë¥¦¥§¥Ö¥µ¥¤¥È¡Ö

Transfermarkt¡×¤«¤é¥ê¥ª¥Í¥ë¡¦¥á¥Ã¥·Áª¼ê¤Ë´Ø¤¹¤ë¥Ú¡¼¥¸¤ÎHTML¤ò¼èÆÀ¤·¤Æ¤¤¤Þ¤¹¡£



¢¡¥Ç¡¼¥¿¤ò²òÀϤ¹¤ë

¼èÆÀ¤·¤¿HTML¤ò²òÀϤ¹¤ë¥Ä¡¼¥ë¤Ë¤Ïcheerio¤äjsdom¤Ê¤É¤¬¤¢¤ê¡¢Prokudin»á¤Ï¥µ¥ó¥×¥ë¥³¡¼¥É¤Çjsdom¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£¤Þ¤º¤Ï¼èÆÀ¤·¤¿HTML¤ò¥×¥í¥°¥é¥à¤Ç°·¤¨¤ë¤è¤¦¤Ë¤¹¤ë¤¿¤á¡¢¥É¥­¥å¥á¥ó¥È¥ª¥Ö¥¸¥§¥¯¥È¥â¥Ç¥ë(DOM)¤òºîÀ®¡£



ºîÀ®¤·¤¿DOM¤«¤é¼èÆÀ¤·¤¿¤¤¾ðÊó¤¬Â¸ºß¤·¤Æ¤¤¤ëÉôʬ¤ÎCSS¥»¥ì¥¯¥¿¡¼¤ò»ØÄꤷ¤Æ¡¢NodeList¥ª¥Ö¥¸¥§¥¯¥È¤òÀ¸À®¡£¤½¤Î¸åArray.from()¥á¥½¥Ã¥É¤ò»È¤Ã¤ÆNodeList¥ª¥Ö¥¸¥§¥¯¥È¤òArray¥ª¥Ö¥¸¥§¥¯¥È¤ËÊÑ´¹¤·¤Þ¤¹¡£¤³¤ì¤ÇÍߤ·¤¤¾ðÊó¤ò°·¤¤¤ä¤¹¤¤ÇÛÎó¤Î·Á¤Ç¼èÆÀ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤·¤¿¡£



¢¡¥Ç¡¼¥¿¤ò½èÍý¤¹¤ë

¼èÆÀ¤·¤¿ÇÛÎó¤Ë¤ÏÉÔÍפʾðÊó¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¤¿¤á¡¢É¬ÍפʾðÊó¤Î¤ß»Ä¤¹¤è¤¦¤Ë½èÍý¤ò¹Ô¤¦¤È¤Î¤³¤È¡£Prokudin»á¤Î¥µ¥ó¥×¥ë¥³¡¼¥É¤Ç¤Ï¡¢ÇÛÎóÆâ¤Î¹Ô¤ÎŤµ¤ò¼èÆÀ¤·¤Æ¡¢¥Ç¡¼¥¿¤Î·Á¾õ¤òÄ´¤Ù¤Æ¤¤¤Þ¤¹¡£º£²ó¤Î¥µ¥ó¥×¥ë¥³¡¼¥É¤Ç¼èÆÀ¤·¤¿ÇÛÎó¤Ï¡¢Ä¹¤µ¤¬1¡¢5¡¢14¡¢15¤Î4¼ïÎà¤ÎŤµ¤Î¹Ô¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£



¹Ô¤ÎŤµ¤Ë±þ¤¸¤Æ½èÍý¤ò²Ã¤¨¤Æ¤¤¤­¤Þ¤¹¡£Ä¹¤µ¤¬15¤Î¹Ô¤ÏÀèÆ¬¤«¤é5ÈÖÌܤޤǤÎÃͤȡ¢6ÈÖÌܰʹߤÎÃͤËʬΥ¡£



¤½¤Î¤Û¤«¤Ë¤âProkudin»á¤Î¥³¡¼¥É¤Ç¤Ï¡¢Ä¹¤µ¤¬1¤Î¹Ô¤Ï½ü³°¤¹¤ë¤È¤¤¤Ã¤¿½èÍý¤¬¹Ô¤ï¤ì¤Æ¤¤¤Þ¤¹¡£



ºÇ¸å¤ËÇÛÎó¤ÎÃͤò¥Þ¥Ã¥Ô¥ó¥°¤¹¤ì¤Ð¡¢¥Ç¡¼¥¿¤Î½èÍý¤Ï´°Î»¡£



¢¡¥Ç¡¼¥¿¤òÊݸ¤¹¤ë

¤¢¤È¤Ï½èÍý¤·¤¿¥Ç¡¼¥¿¤òÊݸ¤¹¤ì¤ÐOK¡£¤³¤ì¤ÇPython¤ò»È¤ï¤º¤Ë¥¦¥§¥Ö¥¹¥¯¥ì¥¤¥Ô¥ó¥°¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£



Prokudin»á¤¬¥Á¥å¡¼¥È¥ê¥¢¥ë¤ËÍѤ¤¤¿Á´¥µ¥ó¥×¥ë¥³¡¼¥É¤ÏCodeSandbox¤Ë¸ø³«¤µ¤ì¤Æ¤¤¤Þ¤¹¡£