ãªã¢ã«ã¿ã€ã ã¬ãã¥ãŒç£èŠãã€ãã©ã€ã³ïŒé¡§å®¢ãã£ãŒãããã¯ã®ããã®AI掻çš
Advanced Bot Mitigation Engineer
äž»ãªãã€ã³ãïŒ
- ã¬ãã¥ãŒã¯èŠåã·ã¹ãã ã§ãããåãªãããŒã±ãã£ã³ã°ã³ããŒã§ã¯ãªãã 1ã€æã®ã¬ãã¥ãŒã倿°éãŸãããšã§ãåºè·å€±æãè«æ±ã®ãã°ããŸãã¯å®å šæ§ã®åé¡ããµããŒããã¥ãŒã«å±ãåã«æ°æ¥åã«èŠåããããšãã§ãã â ãã ãã誰ããå ¬ã«èŠããã¬ãã¥ãŒããŒãžã宿çã«ç¢ºèªããŠããå Žåã«éãã
- é£ããã®ã¯ããŒãžã«ã¢ã¯ã»ã¹ããããšã§ãããèªãããšã§ã¯ãªãã ã»ãšãã©ã®ã¬ãã¥ãŒè¡šé¢ã¯JavaScriptã§ã¬ã³ããªã³ã°ãããããã£ãšèªã¿èŸŒãããã¿ã³ã®èåŸã§ããŒãžããŒãããå®éã®ãã©ãã£ãã¯ãšã¯ç°ãªãææŠããããåçŽãªHTTPãªã¯ãšã¹ãã¯ç©ºã®ã·ã§ã«ãŸãã¯ãããã®å£ãè¿ãã
- 1ã€ã®åºæ¬çãªã»ããã§å
šãŠã®æ®µéãã«ããŒã Scrapeless Scraping Browserã¯å
¬ã«èŠããã¬ãã¥ãŒããŒãžãã¬ã³ããªã³ã°ãã
scrape_markdownãšscrape_htmlã¯ã¯ãªãŒã³ãªããã¹ããè¿ããåãããŒã«ã»ãããæ£èŠå â åæ â ä¿å â èŠåã®ãã€ãã©ã€ã³ã«äŸçµŠãããã - ææ ããã£ãŒããä¿¡å·ã«å€ããã ã¬ãã¥ãŒã1ã€ã®ã¹ããŒãã«æ£èŠåããããšãLLMãããŒã³ãšãããã¯ãã¹ã³ã¢ãªã³ã°ããããŒãªã³ã°ããŒã¹ã©ã€ã³ã«ããããã€ãã©ã€ã³ã¯ãã¹ãŠã®æ°ããã¬ãã¥ãŒã§ã¯ãªããã¬ãã£ããªã¹ãã€ã¯ã«èŠåãçºããããšãã§ããã
- ã¬ãã¥ã¢ãŒã®å人ããŒã¿ã¯æ éã«æ±ãããã ãã€ãã©ã€ã³ã¯å ¬ã«èŠããã³ã³ãã³ãã®ã¿ãèªã¿åããä¿æããæ å ±ãæå°éã«ããèè ã®èå¥åãæåã®æ®µéããææãªæ å ±ãšããŠæ±ãã
- ç¡æã§éå§ã§ããã æ°ããScrapelessã¢ã«ãŠã³ãã«ã¯ãç¡æã®Scraping Browserã©ã³ã¿ã€ã ãå«ãŸããŠããŸã â app.scrapeless.comã§ãµã€ã³ã¢ããããŠãã ããã
ã¯ããã«ïŒåä¿¡ãã¬ã€ãããæ©ããã¬ãã£ãã¹ãã€ã¯ããã£ãããã
å ¬ã«èŠããã¬ãã¥ãŒã¯ããã©ã³ããæã€çå®ã®äžã§æãè¿ éã«åãæ å ±æºã®1ã€ã§ãã補åã®æŽæ°ãäœããå£ããšããããã«ãã£ã«ã¡ã³ãããŒãããŒãæãæãããšãããããã¯ç«¶åä»ç€Ÿã®é¡§å®¢ãé¢ãå§ãããšãä¿¡å·ã¯éåžžãæåã«ã¬ãã¥ãŒã«çŸããŸã â ã¢ããªã¹ãã¢ãããŒã±ãããã¬ã€ã¹ãæ è¡ãµã€ããç¬ç«ããã¬ãã¥ãŒãã©ãããã©ãŒã ã«æ£ãã°ã£ãŠããããµããŒããã±ããã®ãã¬ã³ããããã·ã¥ããŒãã®é¢è±æ°ã«çµ±åãããã¯ããåã§ãã
åé¡ã¯ãã¬ãã¥ãŒã¯1ã€ãã€èªãã®ã¯ç°¡åã§ãããå€§èŠæš¡ã«ç£èŠããã®ã¯é£ããããšã§ããããŒãžã¯JavaScriptã§ã¬ã³ããªã³ã°ãããå€ããšã³ããªã¯ããŒãžããŒã·ã§ã³ãç¡éã¹ã¯ããŒã«ã®èåŸã«é ããå°åã«ãã£ãŠã¬ã€ã¢ãŠããç°ãªããå®éã®ãã©ãŠã¶ã®ããã«èŠããªããã©ãã£ãã¯ã«ææŠããŸããåçŽãªã¹ã¯ãªããã¯ãã°ãã°ç©ºã®ã³ã³ãããåæã®ã€ã³ã¿ãŒã¹ãã£ã·ã£ã«ããŸãã¯ããã察çãã£ã¬ã³ãžãè¿ãã人éãèŠãã³ã³ãã³ãã®ä»£ããã«ãªããŸãããããã¬ã¹ãã©ãŠã¶ããããã·ããŒã«ãã»ãã·ã§ã³ç®¡çãçµã¿åãããã®ã¯ãã·ã³ãã«ãªãã¬ãã¥ãŒãç£èŠããããšããã¢ã€ãã¢ãã€ã³ãã©ãããžã§ã¯ãã«å€ããŠããŸããŸãã
ãã®èšäºã§ã¯ãScrapeless Scraping BrowserãããŒã¹ã«æ§ç¯ãããã¬ãã¥ãŒç£èŠãã€ãã©ã€ã³ã詳ãã説æããŸããæ€åºé²æ¢ã¯ã©ãŠããã©ãŠã¶ã¯å
¬ã«èŠããã¬ãã¥ãŒããŒãžãã¬ã³ããªã³ã°ããscrape_markdownãšscrape_htmlã¯ã¯ãªãŒã³ãªã³ã³ãã³ããè¿ããããããã¯ãŒã¯ãããŒã¯åãšã³ããªã1ã€ã®ã¹ããŒãã«æ£èŠåããLLMã§ææ
ãã¹ã³ã¢ãªã³ã°ããå±¥æŽãä¿åãããã¬ãã£ããã£ãæ¥å¢ãããšèŠåãçºããŸããããã§ã¯ãAIãšãŒãžã§ã³ãã®ãŠãŒã¹ã±ãŒã¹ã¬ã€ãã®ãšãŒãžã§ã³ããŠãŒã¹ã±ãŒã¹ãé§åããåããã¿ãŒã³ãã補åã°ãªããã®ä»£ããã«ã¬ãã¥ãŒè¡šé¢ãæç€ºããŸãã
äœãã§ããã
- å€ãã®è¡šé¢ã§èªåã®ãã©ã³ããç£èŠã ã¢ããªã¹ãã¢ã®ãªã¹ãã£ã³ã°ãããŒã±ãããã¬ã€ã¹ã®è£œåããŒãžãããã³ç¬ç«ããã¬ãã¥ãŒãµã€ããã1ã€ã®è£œåãã«ã¿ãã°å šäœã«å¯ŸããŠåäžã®ã¹ã±ãžã¥ãŒã«ã§è¿œè·¡ããŸãã
- ãã¬ãã£ãã¹ãã€ã¯ãæ©æã«æ€åºã 仿¥ã®ææ ãããŒãªã³ã°ããŒã¹ã©ã€ã³ãšæ¯èŒãããµããŒãã«å±ãåã«äœè©äŸ¡ã®æ¥å¢ãæããã«ããŸãã
- ã¹ã³ã¢ã ãã§ãªãããªãããã¿ã°ä»ãã LLMã«ãããåã¬ãã¥ãŒããããã¯ïŒçºéãè«æ±ãå質ããµããŒãïŒã«ãã£ãŠåé¡ãããããšã§ãã¹ãã€ã¯ã®åå ãç¹å®ããŸãã
- ç«¶åä»ç€Ÿãšæ¯èŒã ç«¶åãªã¹ãã£ã³ã°ã«å¯ŸããŠåãå ¬ã«èŠããèªã¿åããå®è¡ããææ ãã©ãã§åå²ãããã確èªããŸãã
- æ¯é±ã®èŠçŽããã£ãŒãã æ£èŠåãããã¬ãã¥ãŒãèŠçŽã¬ããŒãã«ãŸãšãã補åããµããŒããä¿¡é Œãšå®å šã®ããŒã ã«æäŸããŸãã
- ã©ããžã§ããšã¯ã¹ããŒãã æ£èŠåãããã¬ã³ãŒããã¹ãã¬ããã·ãŒããå庫ããŸãã¯ããŒã¿ããŒã¹ã«æžã蟌ã¿ããããå€ãããªããããç¬éã«ãã£ãããã€ã³ã·ãã³ãããŒã«ã«Webhookãéä¿¡ããŸãã
ãªãScrapeless Scraping Browserã
Scrapeless Scraping Browserã¯ããŠã§ãã¯ããŒã©ãŒãAIãšãŒãžã§ã³ãçšã«èšèšãããã«ã¹ã¿ãã€ãºå¯èœãªæ€åºå¯Ÿçã¯ã©ãŠããã©ãŠã¶ã§ããç¹ã«ã¬ãã¥ãŒç£èŠã®ããã«ã以äžã®æ©èœãæäŸããŸãïŒ
- å®éã®ãã©ãŠã¶ã®ããã«ã¬ã³ããªã³ã°ããã¯ã©ãŠããã©ãŠã¶ â JavaScriptãé å»¶èªã¿èŸŒã¿ã®ã¬ãã¥ãŒãªã¹ããããã£ãšèªã¿èŸŒãããã¿ã³ãããã³åæãããŒã¯ãµãŒããŒãµã€ãã§åŠçãããããããã€ãã©ã€ã³ã¯äººéãèŠãã®ãšåãå®å šãªããŒãžãåãåããŸãã
- 195以äžã®åœã«ãããã¬ãžãã³ã·ã£ã«ãããã· â ã»ãã·ã§ã³ããšã«åºå£å°åãèšå®ããå°ççãªã¬ãã¥ãŒãªã¹ããå°åç¹æã®è©äŸ¡ãããã®åžå Žã§ã®å®éã®èšªåè ãèŠãããã«æ»ããŸãã
- ç®±ããåºããŠãã䜿ããã¯ãªãŒã³ã³ã³ãã³ã â
scrape_markdownã¯ããã²ãŒã·ã§ã³ããã€ã©ãŒãã¬ãŒããåãé€ããèªã¿ãããMarkdownãè¿ããscrape_htmlã¯ãã€ãã©ã€ã³ãæ£ç¢ºãªã»ã¬ã¯ã¿ãå¿ èŠãšããéã«ã¬ã³ããªã³ã°ãããHTMLãè¿ããŸããã©ã¡ããLLMã¹ãããã®çæ³çãªå ¥åã§ãã - ã»ãã·ã§ã³ã®æç¶æ§ã𿿀åºãã£ã³ã¬ãŒããªã³ãã£ã³ã° â ã»ãã·ã§ã³ãæž©ããããŒãžããŒã·ã§ã³ãé²ããæ¯åãã©ãŠã¶ã®ç¶æ ãåæ§ç¯ããããšãªããªã¯ãšã¹ãéã®è¡åã®äžè²«æ§ãä¿ã¡ãŸãã
- æ§æå¯èœãªããŒã« â åã
browser_*ããªããã£ããscrape_markdownãscrape_htmlããœãŒã¹ããšã«åæ§æãããããããµã€ãããšã®ã¢ããã¿ã¯äžèŠã§ãæ°ããã¬ãã¥ãŒãµãŒãã§ã¹ã®è¿œå ã¯ãããã³ããã®å€æŽã ãã§æžã¿ãæ°ãããããžã§ã¯ãã§ã¯ãããŸããã
æé·ãããšãã¯æéããŒãžã§ã¯ãªãŒã¿ãæ¯èŒããŠãã ãããç¡æãã©ã³ã§ã®APIããŒãapp.scrapeless.comã§ååŸããŠãã ããã
ãã€ãã©ã€ã³ã®æŠèŠ
ã¯ãŒã¯ãããŒã¯äºã€ã®ã¹ããŒãžããããããããã®ã¹ããŒãžã次ã®ã¹ããŒãžã«ã¯ãªãŒã³ãªã¢ãŒãã£ãã¡ã¯ããåŒãæž¡ããŸãïŒ
- åé â å ¬éãããŠããåã¬ãã¥ãŒããŒãžãã¹ã±ãžã¥ãŒã«ã«åºã¥ããŠã¬ã³ããªã³ã°ãããã®å 容ãMarkdownãŸãã¯HTMLãšããŠæœåºããŸãã
- æ£èŠå â åãœãŒã¹ã®ã¬ã€ã¢ãŠããäžã€ã®ã¬ãã¥ãŒèšé²ã¹ããŒãã«ãããã³ã°ããŸãã
- åæ â LLMãçšããŠææ ãã¹ã³ã¢ãªã³ã°ãããããã¯ãåé¡ããŸãã
- ä¿åãšãšã¯ã¹ããŒã â æ£èŠåãããã¹ã³ã¢ãä»ããããèšé²ãããŒã¿ããŒã¹ãããŒã¿ãŠã§ã¢ããŠã¹ããŸãã¯ã¹ãã¬ããã·ãŒãã«æ°žç¶åããŸãã
- ã¢ã©ãŒã â æ»çããŠããããŒã¹ã©ã€ã³ãšæ¯èŒãããã¬ãã£ããªã¹ãã€ã¯ãçºçããéã«éç¥ãçºç«ããŸãã
以äžã®ã»ã¯ã·ã§ã³ã§ã¯ãããããã®ã¹ããŒãžãé ã«åãäžããŸããåéã¹ããŒãžã¯ScrapelessããŒã«ã«åºã¥ããŠãããåŸã®ã¹ããŒãžã¯ã¯ãªãŒã³ã§æ£èŠåãããåºåãç°¡åã«è¡ããæšæºçãªããŒã¿ãã€ãã©ã€ã³äœæ¥ã§ãã
ã¹ããŒãž1 â ã¹ã±ãžã¥ãŒã«ã«åºã¥ããŠå ¬éãããŠããã¬ãã¥ãŒãåé
åéã¯ãã¯ã©ãŠããã©ãŠã¶ã解決ããããã«ååšããã¹ããŒãžã§ãïŒã¬ãã¥ãŒURLã«ã»ãã·ã§ã³ããã€ã³ãããã¬ã³ããªã³ã°ãããŠå 容ãè¿ããŸããæœåºã®æ£ç¢ºãã«å¿ããŠã2ã€ã®ãµãŒãã§ã¹ããããŸãã
ã»ãšãã©ã®ãœãŒã¹ã«å¯ŸããŠãscrape_markdownãæãéããã¹ã§ã â ããŒãžãã¬ã³ããªã³ã°ããããã²ãŒã·ã§ã³ãåºåãããã¿ãŒãã€ã©ãŒãã¬ãŒããåãé€ããã¯ãªãŒã³ã§èªã¿ãããMarkdownãè¿ããLLMãèªã¿ããããã¹ããšã»ãŒå®å
šã«äžèŽããŸãããã€ãã©ã€ã³ãç¹å®ã®DOMããŒãã«åºã¥ãå¿
èŠãããå ŽåïŒæè©äŸ¡èŠçŽ ãç¢ºèªæžã¿è³Œå
¥ãããžãæ§é 忥ä»ãªã©ïŒãscrape_htmlã¯ã¬ã³ããªã³ã°ãããHTMLãè¿ããããããŒãµãŒããããã®ã»ã¬ã¯ã¿ãçŽæ¥ã¿ãŒã²ããã«ã§ããŸãã
äž¡æ¹ã®ããŒã«ã¯ãå°åã«é©åããããŒãžãè¿ãäœå® çšåºå£ãæã€ææ€åºã¯ã©ãŠããã©ãŠã¶ã§åäœãããããè¿ãããããŒãžã¯ç©ºã®ã·ã§ã«ãææŠã§ã¯ãªããã¬ã³ããªã³ã°ãããå°åé©åããŒãžã§ãã宿çãªãžã§ãïŒcronããµãŒããŒã¬ã¹ã¿ã€ããŒããŸãã¯ã¯ãŒã¯ãããŒã©ã³ããŒïŒãããŒã¹ãæšé²ããŸã â ããŒã³ããŠã£ã³ããŠã®ããã«æ¯æãå®å®ããç£èŠã®ããã«æ¯æ¥ã§ãã
Scrapeless MCPããŒã«ã䜿çšããæå°éã®åéã¹ãããã¯æ¬¡ã®ããã«ãªããŸããã¹ããŒãã¬ã¹ããŒã«ã¯ãããã£ã®åã«åºåãResponse:\n\nã§ãã¬ãã£ãã¯ã¹ããŸãã®ã§ããã€ãã©ã€ã³ã¯è§£æããåã«ãã®ãã¬ãã£ãã¯ã¹ãåé€ããŸãã
python
import os, requests
# scrape_markdown / scrape_htmlã¯Scrapeless MCPãµãŒããŒã§å®è¡ãããŸãã
# äž¡æ¹ãšãå
¬éãããŠããããŒãžããäœå®
çšåºå£ãæã€ææ€åºã¯ã©ãŠããã©ãŠã¶ã§ã¬ã³ããªã³ã°
# ãããããå®éã®èšªåè
ãèŠãå
容ã«äžèŽããŸãã
REVIEW_URLS = [
"https://example-marketplace.com/product/SKU-123/reviews",
"https://example-reviews.com/listing/acme-app",
]
def collect(url: str) -> str:
# MCPé§ååãšãŒãžã§ã³ãã§ã¯ãããããŒã«åŒã³åºãã§ãïŒscrape_markdown(url=url)ã
# 以äžã®äŸã§ã¯ãã¹ã¿ã³ãã¢ãã³ãžã§ãã®åçã®æå³ã瀺ããŠããŸãã
payload = {"url": url} # ã»ãã·ã§ã³ã¬ãã«ã§å°å/ãããã·åœã远å
text = call_scrape_markdown(payload) # ã¯ãªãŒã³ãªMarkdownãè¿ã
return text.removeprefix("Response:\n\n") # ã¹ããŒãã¬ã¹ããŒã«ã®ãã¬ãã£ãã¯ã¹ãåé€
raw_pages = {url: collect(url) for url in REVIEW_URLS}
ããŒãžããŒã·ã§ã³ãŸãã¯ç¡éã¹ã¯ããŒã«ã®ã¬ãã¥ãŒãªã¹ãã®å Žåããã©ãŠã¶ã®ããªããã£ãã¯ããéããããŒãæ
ããŸãïŒbrowser_createã¯ã»ãã·ã§ã³ãçæããbrowser_gotoã¯ãªã¹ãã«ç§»åããbrowser_scrollãããã£ãšèªã¿èŸŒããã®ã³ã³ãããŒã«ãã¯ãªãã¯ãããšå€ãã¬ãã¥ãŒã衚瀺ãããbrowser_get_htmlã¯ãªã¹ããæé·ããã«ã€ããŠæ¡åŒµãããããŒãžãè¿ããŸããã¬ãã¥ãŒããŒãžãèšå®ããããå°åã«é©ããã»ãã·ã§ã³ã«å¯ŸããŠã¬ã³ããªã³ã°ãããããã«ããªã¹ãã®èŠªããŒãžã§ã»ãã·ã§ã³ãæž©ããŸãã
ãœãŒã¹ãã¬ãã¥ãŒãããŒã«ã©ã€ãºããå Žåããã®åžå Žã®ãããã·åœã§ã»ãã·ã§ã³ã®åºå£ãåºå®ããŸããåãåé圢ç¶ã¯ãã¿ãŒã²ãããã¢ããªã¹ãã¢ãããŒã±ãããã¬ã€ã¹ã®è£œåããŒãžãæ è¡ãªã¹ãããŸãã¯ã¹ã¿ã³ãã¢ãã³ã®ã¬ãã¥ãŒ ãã©ãããã©ãŒã ã§ãã£ãŠãæ©èœããŸã â å€ããã®ã¯URLãšã»ã¬ã¯ã¿ã ãã§ãã
ã¹ããŒãž2 â 1ã€ã®ã¬ãã¥ãŒèšé²ã«æ£èŠå
ãã¹ãŠã®ã¬ãã¥ãŒã®è¡šé¢ã«ã¯ç¬èªã®ã¬ã€ã¢ãŠãããã£ãŒã«ãåãæ¥ä»åœ¢åŒããããŸããæ£èŠåã¹ããŒãžã¯ããããã¹ãŠãåäžã®ã¹ããŒãã«ãã©ããåãããããäžæµã®ã¹ããŒãžã¯ã¬ã³ãŒããã©ã®ãœãŒã¹ããæ¥ãã®ããç¥ãå¿ èŠããããŸãããå®çšçãªã¬ã³ãŒãã¯ãã€ãã©ã€ã³ãå¿ èŠãšãããã®ã®ã¿ãä¿æããèè ã®ã¢ã€ãã³ãã£ãã£ãæåããææãªãã®ãšããŠæ±ããŸãïŒ
json
{
"source": "example-marketplace", // ã¬ãã¥ãŒãã©ã®è¡šé¢ããæ¥ãã®ã
"review_id": "rv_8f21c0", // ãœãŒã¹ããšã®å®å®ããèå¥åïŒå¿
èŠã«å¿ããŠããã·ã¥åïŒ
"product": "Acme Wireless Earbuds", // ã¬ãã¥ãŒå¯Ÿè±¡ã®ååãŸãã¯ãªã¹ã
"rating": 2, // 1ïœ5ã®ã¹ã±ãŒã«ã«æ£èŠå
"title": "ïŒé±éåŸã«å
é»ã stopped",
"body": "æåã¯åé¡ãªãåäœããŸãããããã®åŸã±ãŒã¹ãå
é»ãä¿æããªããªããŸãã...",
"review_date": "2026幎5æ12æ¥", // DD-MMM-YYYY圢åŒã«æ£èŠå
"author_display": "J. R.", // æå°éïŒã€ãã·ã£ã«ãŸãã¯ç²ããã³ãã«ã®ã¿
"verified": true, // ãœãŒã¹ããããå
¬éããŠããå Žåã®èªèšŒè³Œå
¥ãã©ã°
"language": "ja",
"collected_at": "2026幎5æ25æ¥"
}
æ£èŠåã¯æ±ºå®è«çãããã³ã°ã§ãïŒåãœãŒã¹ã®è©äŸ¡ã¹ã±ãŒã«ãå
±éã®1ã5ã«å€æããæ¥ä»ãäžã€ã®åœ¢åŒã«è§£æããã¿ã€ãã«ã𿬿ã®ããã¹ããæœåºããŸããã¹ããŒãž1ããã®ã¯ãªãŒã³ãªMarkdownã¯ãã¿ã€ãã«ã𿬿ãç°¡åã«éé¢ã§ããããã«ããscrape_htmlããã®ã¬ã³ããªã³ã°ãããHTMLã¯ãè©äŸ¡ãdata-屿§ãã¢ã€ã³ã³ã«ãŠã³ãã®äžã«ãããå¯èŠããã¹ãã§ãªãå Žåã«çšãããã®ã§ãã
ããã«ã¯2ã€ã®ããŒã¿è¡çã«ãŒã«ãå«ãŸããŸãããŸããéè€ãæé€ããŸãâã¬ãã¥ãŒã®ããŒãžã¯ãå®è¡ããšã«åããšã³ããªãåæç»ãããããå®å®ãããœãŒã¹ããšã®review_idïŒãã€ãã£ãIDèªäœãèå¥ããå Žåã¯ããã·ã¥åïŒã§ããŒãäœæããéè€ãåé€ããŸããæ¬¡ã«ãå人ããŒã¿ãæå°éã«æããŸãïŒauthor_displayãã€ãã·ã£ã«ãŸãã¯ç²ãå
¬éãã³ãã«ãšããŠä¿æãããã°ã€ã³ã®åŸãã«ããŒã¿ãåéãããåæã¹ããŒãžã§äœ¿çšããªããã£ãŒã«ãã¯ã¹ãããããŸãã以äžã®ã³ã³ãã©ã€ã¢ã³ã¹ã»ã¯ã·ã§ã³ã§ã¯ããªããããéèŠãªã®ãã«ã€ããŠè©³ãã説æããŸãã
ã¹ããŒãž3 â ã»ã³ãã¡ã³ããšãããã¯ã®åæ
ãã¹ãŠã®ã¬ãã¥ãŒãäžã€ã®ã¹ããŒãã«æã£ãç¶æ ã§ãåæã¹ããŒãžã¯2ã€ã®æŽŸçãã£ãŒã«ãâã»ã³ãã¡ã³ãã¹ã³ã¢ãšãããã¯ã¿ã°âã远å ããLLMãäžåã®ãã¹ã§äž¡æ¹ãåŠçããŸããåéã¹ããŒãžããã®ã¯ãªãŒã³ãªããã¹ãã¯ãã¢ãã«ãæã广çã«æ±ãå ¥åã§ãããããã²ãŒã·ã§ã³ãããŒã¯ã¢ããã®æ··ä¹±ããããŸããã
python
def analyze(review: dict) -> dict:
prompt = (
"以äžã®é¡§å®¢ã¬ãã¥ãŒãåé¡ããŠãã ããã\n"
"JSONã§è¿ããŸãïŒã»ã³ãã¡ã³ãïŒãã¬ãã£ãããã¥ãŒãã©ã«ãããžãã£ãã®ããããïŒã"
"ã»ã³ãã¡ã³ãã¹ã³ã¢ïŒ-1.0ãã1.0ïŒãããã³ãããã¯ïŒ"
"é
éãè«æ±ãå質ããµããŒãã䜿ããããããã®ä»ã®ããããïŒã\n\n"
f"ã¿ã€ãã«: {review['title']}\n"
f"æ¬æ: {review['body']}"
)
result = call_llm(prompt) # ããªãã®éžãã ã¢ãã«
review.update(result) # ã»ã³ãã¡ã³ããã»ã³ãã¡ã³ãã¹ã³ã¢ããããã¯ã远å
return review
scored = [analyze(r) for r in normalized_reviews]
ãããã¯ã¿ã°ã¯ãã¢ã©ãŒããå®è¡å¯èœãªãã®ã«å€ãããã®ã§ãããã¹ãŠé
éã«ã¿ã°ä»ãããããã¬ãã£ãã¬ãã¥ãŒã®æ¥å¢ã¯ããµããŒããšãªãã¬ãŒã·ã§ã³ã« fulfillment ã®åé¡ãææããŸããåãæ¥å¢ãè«æ±ã«ã¿ã°ä»ããããŠãããšãç°ãªãããŒã ãžã®åãã¢ã©ãŒããéãããŸããã©ãã«ã»ããã¯å°ããåºå®ããŠããããšã§ã¿ã°ãå®è¡éã§æ¯èŒå¯èœãªç¶æ
ã«ä¿ãããŸãã
ç¡æãã©ã³ã§ããªãã®APIããŒãååŸããïŒapp.scrapeless.com
ã¹ããŒãž4 â ä¿åãšãšã¯ã¹ããŒã
ã¹ãã¬ãŒãžã¹ããŒãžã¯ããã€ãã©ã€ã³ãæéã®çµéãšãšãã«ãã¬ã³ããèšç®ã§ããããã«ãã¹ã³ã¢ä»ãã®æ£èŠåãããã¬ã³ãŒããæ°žç¶åããä»ã®ããŒã ãããŒã¿ãåãåãããéã«åéãç¹°ãè¿ããªããŠãæžãããã«ããŸããã©ã®ã¹ãã¬ãŒãžã§ãæ©èœããŸã â é¢ä¿ããŒã¿ããŒã¹ãããŒã¿ãŠã§ã¢ããŠã¹ãŸãã¯è»œéã»ããã¢ããã®ããã®ã¹ãã¬ããã·ãŒãã§ããã¹ããŒãž2ã®ã¹ããŒãã«å ããã¹ããŒãž3ããã®2ã€ã®æŽŸçãã£ãŒã«ããè¡ãæ§æããŸãã
ã¹ãã¬ãŒãžã䟿å©ã«ä¿ã€2ã€ã®èšèšéžæããããŸããcollected_atã¿ã€ã ã¹ã¿ã³ãã§è¿œå å°çšã§æžã蟌ãããšã«ãããå±¥æŽãä¿æãããããŒãªã³ã°ããŒã¹ã©ã€ã³ãèšç®ããã®ãç°¡åã«ãªããŸãããããŠãsourceãproductãããã³review_dateã§ã€ã³ããã¯ã¹ãä»ããããšã«ãããã¢ã©ãŒãã¹ããŒãžããããã®ãããããè¿
éã«ã¹ã©ã€ã¹ã§ããããã«ããŸãããšã¯ã¹ããŒãã¯ããã®åŸåãã¹ãã¬ãŒãžã«å¯Ÿããèªã¿åããšãªããŸã â BIããŒã«ãžã®ã¹ã±ãžã¥ãŒã«ãããããã·ã¥ãå
±æãã©ã€ããžã®æ¯æ¥ã®CSVããŸãã¯ãµããŒããšè²©å£²ããŒã¿ã«å¯Ÿããçµåã®ããã®ããŒã¿ãŠã§ã¢ããŠã¹ãžã®åæã§ããã¬ã³ãŒãã¯ãã§ã«æ£èŠåãããã¹ã³ã¢ãä»ããããŠãããããäžæµã®æ¶è²»è
ã¯ã¬ãã¥ãŒãã¢ããªã¹ãã¢ããæ¥ããã®ã§ãã£ãŠãããŒã±ãããã¬ã€ã¹ããæ¥ããã®ã§ãã£ãŠãåã圢ãèŠãããšãã§ããŸãã
ã¹ããŒãž5 â ãã¬ãã£ãã¹ãã€ã¯ã«ã¢ã©ãŒããåºã
æçµã¹ããŒãžã¯ããã€ãã©ã€ã³ã宿çã«å®è¡ãã䟡å€ãçã¿åºããŸãããã¹ãŠã®æ°ããã¬ãã¥ãŒã§ã¢ã©ãŒããçºããã®ã¯ãã€ãºã§ãããã»ã³ãã¡ã³ãã®å€åã§ã¢ã©ãŒããçºããã®ãä¿¡å·ã§ããããŒãªã³ã°ããŒã¹ã©ã€ã³ãèšç®ããŸã â äŸãã°ãéå»7æ¥éã®è£œåããšã®å¹³åã»ã³ãã¡ã³ãã¹ã³ã¢ãšãã¬ãã£ãã¬ãã¥ãŒæ° â ãããŠãåæ°ããããããããã«å¯ŸããŠæ¯èŒããŸãããã¬ãã£ãæ°ãŸãã¯å¹³åã¹ã³ã¢ããã®ããŒã¹ã©ã€ã³ã«å¯ŸããŠãããå€ãè¶ ããå Žåãéç¥ãçºåããŸãã
python
以äžã¯ãæå®ãããè±èªã®ããã¹ããæ¥æ¬èªã«ç¿»èš³ãããã®ã§ãïŒ
```python
def check_spike(product: str, recent: list[dict], baseline: dict) -> bool:
neg_now = sum(1 for r in recent if r["sentiment"] == "negative")
# ã¹ãã€ã¯ = 仿¥ã®ãã¬ãã£ãã³ã¡ã³ããéå»ã®ããŒã¹ã©ã€ã³ã倧ããäžåã£ãŠããããšã
return neg_now >= max(baseline["neg_avg"] * 2, baseline["neg_avg"] + 3)
def alert(product: str, recent: list[dict]) -> None:
top = [r for r in recent if r["sentiment"] == "negative"][:5]
requests.post(
os.environ["ALERT_WEBHOOK_URL"],
json={
"text": f"{product}ã®ãã¬ãã£ãã¬ãã¥ãŒã®ã¹ãã€ã¯",
"examples": [
{"topic": r["topic"], "title": r["title"], "rating": r["rating"]}
for r in top
],
},
timeout=15,
)
ãŠã§ãããã¯ã¯ãã£ãããã£ã³ãã«ãã€ã³ã·ãã³ãããŒã«ããŸãã¯ã¡ãŒã«ã²ãŒããŠã§ã€ãã¿ãŒã²ããã«ããããšãã§ããŸããæ¯é çãªãããã¯ãšããã€ãã®ä»£è¡šçãªã¿ã€ãã«ããã€ããŒãã«å«ããããšã§ãåä¿¡ããŒã ã¯åãã¡ãã»ãŒãžå ã§äœãšçç±ãèŠãããšãã§ããŸã â åºè·ã®ã¹ãã€ã¯ã¯è«æ±ã®ã¹ãã€ã¯ãšã¯ç°ãªãæå³ãæã¡ãŸãã
ã¹ã±ãžã¥ãŒã©ãŒã¯5ã€ã®ã¹ããŒãžãçµã³ã€ããŸãïŒåãã£ãã¯ã§ææ°ã®å ¬éã¬ãã¥ãŒãåéããæ£èŠåããŠã¹ã³ã¢ãªã³ã°ããã¹ãã¢ã«è¿œå ããããŒã¹ã©ã€ã³ãåèšç®ããã¹ãã€ã¯ããã§ãã¯ããŸããéåžžãå®åžžç¶æ ã®ç£èŠã«ã¯æ¥æ¬¡ã§ååã§ããèµ·åäžãã¢ã¯ãã£ããªã€ã³ã·ãã³ãã®å Žåã¯ãæéããšã«å³ããããŸããåæå®è¡æ§ã¯æ§ããã«ä¿ã¡ãŸã â ãã¹ãããšã«çŽ3ã»ãã·ã§ã³ â ããããã°ãåéã¹ããŒãžã¯åäžãœãŒã¹ã«å¯ŸããŠãè¯å¥œã«åäœããŸãã
è¿ããããã®
å®å šãªãã¹ã®åŸãã¹ãã¢å ã®åã¬ã³ãŒãã¯æ£èŠåããããã£ãŒã«ããš2ã€ã®å°åºãã£ãŒã«ããæã¡ãŸãã以äžã®åœ¢ã¯èŠç¯çã§ãïŒãã£ãŒã«ãå€ã¯äŸç€ºçãªãµã³ãã«ã§ãã
json
{
"source": "example-marketplace",
"review_id": "rv_8f21c0",
"product": "Acme Wireless Earbuds",
"rating": 2,
"title": "2é±éåŸã«å
é»ãæ¢ãŸããŸãã",
"body": "æåã¯ããŸããã£ãŠããŸãããããã®åŸã±ãŒã¹ãå
é»ãä¿æã§ããªããªããŸãã...",
"review_date": "2026幎5æ12æ¥",
"author_display": "J. R.",
"verified": true,
"language": "en",
"collected_at": "2026幎5æ25æ¥",
"sentiment": "negative", // ã¹ããŒãž3ã§è¿œå ãããŸãã
"sentiment_score": -0.72, // ã¹ããŒãž3ã§è¿œå ãããŸãã
"topic": "quality" // ã¹ããŒãž3ã§è¿œå ãããŸãã
}
åºåã«é¢ããããã€ãã®æ£çŽãªèгå¯ïŒ
- æ°Žåè£çµŠã®ã¿ã€ãã³ã°ã¯ãœãŒã¹ã«ãã£ãŠç°ãªãã äžéšã®ã¬ãã¥ãŒãªã¹ãã¯ããã«å
å¡«ãããä»ã®ãã®ã¯ã¹ã¯ããŒã«ã§é
å»¶èªã¿èŸŒã¿ãããŸããããŒãžãèªãåã«ã¬ãã¥ãŒã³ã³ããã衚瀺ãããã®ãåŸ
ã¡ã
browser_scrollã䜿çšããŠç¡éã¹ã¯ããŒã«ãªã¹ãã®å€ããšã³ããªã衚瀺ããŸãã - ã»ã¬ã¯ã¿ãå転ããã ã¬ãã¥ãŒãµã€ãã¯åèšèšãããè©äŸ¡èŠçŽ ã確èªè³Œå ¥ãããžãç§»åããŸããæãå®å®ããã³ã³ããã«äŸåããç®ã«èŠããåèšèšã®åŸã«ã»ã¬ã¯ã¿ãå確èªããŸãã
- äžéšã®ãã£ãŒã«ãã¯æ¡ä»¶ä»ãã§ããã 確èªè³Œå ¥ãã©ã°ã圹ç«ã¡ç¥šæ°ãã¬ãã¥ã¢ãŒã®äœçœ®æ å ±ã¯äžéšã®ãœãŒã¹ã«è¡šç€ºãããä»ã®ãœãŒã¹ã«ã¯è¡šç€ºãããŸãã â ååšããªããã£ãŒã«ãã¯ååšãããšä»®å®ããã®ã§ã¯ãªãããã«å¯èœãªãã®ãšããŠæ±ããŸãã
- åæãšå°åãéèŠã§ãã å°åç¹æã®ã¬ãã¥ãŒã瀺ãåæã®ã€ã³ã¿ãŒã¹ãã£ã·ã£ã«ã衚瀺ãããããšããããããã»ãã·ã§ã³ã®åºå£ãã¿ãŒã²ããåžå Žã«åºå®ããããã«æ¬ç©ã®èšªåè ãèŠãã³ã³ãã³ããšäžèŽãããŸãã
- ææ ã¯ã¢ãã«ã®å€æã§ããã ã¹ã³ã¢ã¯å°åºãããä¿¡å·ã§ãããçå®ã®å°é¢ã§ã¯ãããŸãããèŠåã確èªã§ããããã«å ã®ã¿ã€ãã«ã𿬿ãäžç·ã«ä¿æããŸãã
ã¬ãã¥ã¢ãŒã®å人ããŒã¿ã責任ãæã£ãŠåŠçãã
ã¬ãã¥ãŒã¯å ¬éãããŠããŸããã人ã ã«ãã£ãŠæžãããŠãããããã«ä»éããååããã³ãã«ãããã³æã«ã¯å Žæã¯å人ããŒã¿ã§ããã¢ãã¿ãªã³ã°ãã€ãã©ã€ã³ã¯ãã§ããã ãå°ãªããã®ããŒã¿ãå¿ èŠãšããããã«æ§ç¯ãããã¹ãã§ãã
å®åçãªå§¿å¢ïŒå ¬éãããŠããã³ã³ãã³ãã®ã¿ãåéããæ±ºããŠãã°ã€ã³ã®èåŸã«ãããã®ã¯åéãããåæãå¿ èŠãšããªãéãããã«ã®ã¬ãã¥ã¢ãŒåã®ä»£ããã«ã€ãã·ã£ã«ãç²ãå ¬éãã³ãã«ãä¿åããããšã§ä¿æãããã®ãæå°éã«ããŸãããŸããææ åæã®ããã«æ¬æã®ããã¹ããä¿æãã€ã€ãåã ã®ã¬ãã¥ã¢ãŒã®ãããã¡ã€ã«ããœãŒã¹ããŸããã§æ§ç¯ããªãããã«ããŸããæ³åã®ãã©ã€ãã·ãŒèŠåãé©çšãããå Žåã¯ããããå°éããèŠæ±ã«å¿ããŠåé€ãã矩åãå«ããå€ãã¬ã³ãŒããç¡éã«èç©ãããã®ã§ã¯ãªãæéä¿åãããããã«ä¿æãŠã£ã³ããŠãææžåããŠãã ãããç®æšã¯ååã®éçŽä¿¡å·ã§ãããå人ã«é¢ãããã¡ã€ã«ã§ã¯ãããŸãããã¹ããŒããšä¿æã«ãŒã«ã¯ãããåæ ããã¹ãã§ãã
çµè«ïŒæ£çºçãªã¬ãã¥ãŒã1ã€ã®ç£èŠä¿¡å·ã«å€ãã
ã¬ãã¥ãŒç£èŠãã€ãã©ã€ã³ã¯5ã€ã®åãã«éçŽãããŸãïŒå
¬éãããŠããããŒãžãã¬ã³ããªã³ã°ããæ£èŠåããã¹ã³ã¢ãªã³ã°ããä¿åããã¹ãã€ã¯ã«èŠåããŸããScrapeless Scraping Browserã¯ãJavaScriptãæ€åºåé¿ãã£ã¬ã³ãžãéããŠã¬ã³ããªã³ã°ãããå°åã«æ£ããã¬ãã¥ãŒããŒãžã«å°éãããšããæ¬åœã«å°é£ãªåããåŠçããscrape_markdownãšscrape_htmlããã€ãã©ã€ã³ã®æ®ãã®éšåã«ã¯ãªãŒã³ãªå
¥åãæäŸããŸãããã¹ãŠã®ããŠã³ã¹ããªãŒã ã¯ãæ£èŠåãããã¹ããŒãã«ãã£ãŠç°¡åã«ãããéåžžã®ããŒã¿äœæ¥ã§ãã
ã»ãã·ã§ã³ã®åºå£ãã¬ãã¥ãŒãæ¥ãåžå Žã«åºå®ããæåã®æ®µéã§èè
ããŒã¿ãæå°éã«æããå®å®ããã³ã³ããã«ã¢ã³ã«ãŒãèšå®ããåèšèšåŸã«ã»ã¬ã¯ã¿ãå確èªããäžè¶³ããŠãããã£ãŒã«ããnullableãšããŠæ±ããŸããè€æ°ã®ãœãŒã¹ã«ãããåãããªããã£ããæ§æããåºãèŠç¹ã«ã€ããŠã¯ã[5ã€ã®Scrapeless MCPãŠãŒã¹ã±ãŒã¹](https://www.scrapeless.com/ja/blog/5-scrapeless-mcp-use-cases-2026?utm_source=website&utm_medium=blog&utm_campaign=scrapingbrowser&utm_term=review-monitoring-pipeline-scrapeless)ãš[AIãšãŒãžã§ã³ããŠãŒã¹ã±ãŒã¹ã¬ã€ã](https://www.scrapeless.com/ja/blog/ai-agent-use-cases-scrapeless-2026?utm_source=website&utm_medium=blog&utm_campaign=scrapingbrowser&utm_term=review-monitoring-pipeline-scrapeless)ãåç
§ããŠãã ãããããŒã«ãšSDKã®å®å
šãªã»ããã¢ããã¯[ããã¥ã¡ã³ã](https://docs.scrapeless.com?utm_source=website&utm_medium=blog&utm_campaign=scrapingbrowser&utm_term=review-monitoring-pipeline-scrapeless)ã«ãããŸãã
---
## AIãã¯ãŒã®ããŒã¿ãã€ãã©ã€ã³ãæ§ç¯ããæºåã¯ã§ããŸãããïŒ
ç¡æãã©ã³ãå©çšããŠã¬ãã¥ãŒç£èŠãã€ãã©ã€ã³ãæ§ç¯ããŠããéçºè
ãšã€ãªããããã«ãã³ãã¥ããã£ã«åå ããŠãã ããïŒ[Discord](https://discord.gg/VU2vtbq7Q2) · [Telegram](https://t.me/scrapeless)ã
[app.scrapeless.com](https://app.scrapeless.com/passport/login/?utm_source=website&utm_medium=blog&utm_campaign=scrapingbrowser&utm_term=review-monitoring-pipeline-scrapeless)ã«ãµã€ã³ã¢ããããŠç¡æã®Scraping Browserã©ã³ã¿ã€ã ãå
¥æããäžèšã®ãã¿ãŒã³ãã¬ãã¥ãŒããŒãžã補åãããã³ãã€ãã©ã€ã³ãå¿
èŠãšããå°åã«é©çšããŠãã ããã
---
## ãããã質å
**Q: ãªã³ã©ã€ã³ã¬ãã¥ãŒã®ç£èŠã¯åæ³ã§ããïŒ**
ãã€ãã©ã€ã³ã¯å
¬éãããŠããã¬ãã¥ãŒã³ã³ãã³ãã®ã¿ãèªã¿åããŸã â ãã°ã€ã³ããã©ã€ããŒãã¢ã«ãŠã³ããå¶éããããœãŒã¹ã®è£åŽã®ãã®ã¯äžåå«ãŸããŸãããã¬ãã¥ãŒã¯äººã«ãã£ãŠæžããããããããã«ä»éããååããã³ãã«ã¯å人ããŒã¿ã§ãïŒå¿
èŠãªæå°éãåéããå¯èœãªéããã«ããŒã ã§ã¯ãªãç²ãèå¥åãä¿åããåé€çŸ©åãå«ãé©çšå¯èœãªãã©ã€ãã·ãŒã«ãŒã«ãå°éããŠãã ãããæ³ä»€ããã©ãããã©ãŒã ã®èŠçŽã¯ç®¡èœåºåããµã€ãããšã«ç°ãªããããåãœãŒã¹ã®å©çšèŠçŽã確èªããç¹å®ã®äœ¿çšã«ã€ããŠã¯æ³åŸçžè«ãåããŠãã ããã
**Q: ãããã·ã¯å¿
èŠã§ããïŒ**
ã¯ããã¬ãã¥ãŒããŒãžã¯IPã®è©å€ãè©äŸ¡ããã³ã³ãã³ããããŒã«ã©ã€ãºããããšãå€ããããScrapeless Scraping Browserã¯195ã«åœä»¥äžã®äœå®
çšãããã·ã䜿çšããŸããã»ãã·ã§ã³ã®åºå£ãã¬ãã¥ãŒãæ¥ãåžå Žã«åºå®ããããšã§ãè©äŸ¡ãã¬ãã¥ãŒã®ããã¹ãããã®å°åã®å®éã®èšªåè
ãèŠããã®ãšäžèŽããŸãã
**Q: ãã€ãã©ã€ã³ã¯ã©ã®ãããã®é »åºŠã§å®è¡ãã¹ãã§ããïŒ**
ãªã¹ã¯ã«åãããŠé »åºŠã調æŽããŸããå®å®æéã®ãã©ã³ãç£èŠã«ã¯éåžžãæ¯æ¥ã®åéã§ååã§ããã補åã®ããŒã³ããæŽ»çºãªã€ã³ã·ãã³ãã®éã¯ããã¬ãã£ããªæ¥äžæãè¿
éã«æµ®äžãããããã«æ¯æã«åŒ·åããŸããã¹ã±ãžã¥ãŒã©ãé »åºŠã管çããŸã â cronããµãŒããŒã¬ã¹ã¿ã€ããŒããŸãã¯ã¯ãŒã¯ãããŒã©ã³ããŒã¯ãã¹ãŠæ©èœããŸãã
**Q: ãã€ãã©ã€ã³ã¯åçã§JavaScriptéèŠã®ã¬ãã¥ãŒããŒãžãã©ã®ããã«åŠçããŸããïŒ**
ã¢ã³ãæ€ç¥ã¯ã©ãŠããã©ãŠã¶ã¯ãµãŒããŒåŽã§ããŒãžãã¬ã³ããªã³ã°ãããããã¬ã€ãžãŒããŒããªã¹ããããã£ãšèªã¿èŸŒããã³ã³ãããŒã«ãåæãããŒã¯ã³ã³ãã³ããè¿ãããåã«è§£æ±ºãããŸããcleanãªããã¹ãã«ã¯`scrape_markdown`ã䜿çšããç¹å®ã®DOMããŒãã«ã¢ã³ã«ãŒãåãããå¿
èŠãããå Žåã¯`scrape_html`ã䜿çšããããŒãžããŒã·ã§ã³ããããªã¹ããç¡éã¹ã¯ããŒã«ã®ã¬ãã¥ãŒãªã¹ãã衚瀺ããã³ãã£ããã£ããããã«ã¯`browser_scroll`ãš`browser_get_html`ãåãããŠäœ¿çšããŸãã
**Q: ããã§ã®`scrape_markdown`ãš`scrape_html`ã®éãã¯äœã§ããïŒ**
`scrape_markdown`ã¯ããã²ãŒã·ã§ã³ããã€ã©ãŒãã¬ãŒããé€å»ããã¯ãªãŒã³ã§èªã¿ãããMarkdownãè¿ããŸã â ææ
ã¹ããããžã®çŽæ¥çãªå
¥åãšããŠçæ³çã§ãã`scrape_html`ã¯ã¬ã³ããªã³ã°ãããHTMLãè¿ããè©äŸ¡ãæ¥ä»ããŸãã¯ç¢ºèªããã賌å
¥ãããžãæ§é åãããDOMããŒãã«ååšããå ŽåãããŒãµãŒãæ£ç¢ºã«ã¿ãŒã²ããã«ããå¿
èŠããããã®ã§ãã
**Q: AIãšãŒãžã§ã³ããªãã§ãããå®è¡ã§ããŸããïŒ**
ã¯ããåéããŒã«ã¯ã¹ã¿ã³ãã¢ãã³ã®åŒã³åºããšããŠå®è¡ãããããŒãã©ã€ãºãã¹ãã¢ãã¢ã©ãŒã段éã¯éåžžã®ã³ãŒããšããŠæ©èœããããããã€ãã©ã€ã³å
šäœãã¹ã±ãžã¥ãŒã«ããããžã§ããšããŠåããŸãããããAIãšãŒãžã§ã³ããä»ããŠMCPã§é§åããã®ã¯äŸ¿å©ãªæ¹æ³ã§ãããå¿
é ã§ã¯ãããŸããã
**Q: ã¬ãã¥ãŒãµã€ããåèšèšããããšãã«ã»ã¬ã¯ã¿ãæ©èœããç¶ããã«ã¯ã©ãããã°ããã§ããïŒ**
ããŒãžãå
¬éããæãå®å®ããã³ã³ããã«ã¢ã³ã«ãŒãèšå®ããæ¡ä»¶ä»ããã£ãŒã«ããnullableãšããŠæ±ããŸããç®ã«èŠããåèšèšã®åŸã«ã¯ãäžåºŠæ°ãã«åéãè¡ããæ°ããã¬ã€ã¢ãŠãã«å¯ŸããŠã³ã³ãããšãã£ãŒã«ãã»ã¬ã¯ã¿ã確èªããããŒãã©ã€ãºãããã³ã°ãæŽæ°ããŸã â ãã€ãã©ã€ã³ã®æ®ãéšåã¯åœ±é¿ãåããŸããããªããªããããã¯åžžã«ããŒãã©ã€ãºãããã¹ããŒãã®ã¿ãåç
§ããããã§ãã
Scrapelessã§ã¯ãé©çšãããæ³åŸãèŠå¶ãããã³Webãµã€ãã®ãã©ã€ãã·ãŒããªã·ãŒãå³å¯ã«éµå®ããªãããå ¬éãããŠããããŒã¿ã®ã¿ã«ã¢ã¯ã»ã¹ããŸãã ãã®ããã°ã®ã³ã³ãã³ãã¯ããã¢ã³ã¹ãã¬ãŒã·ã§ã³ã®ã¿ãç®çãšããŠãããéæ³ãŸãã¯äŸµå®³ã®æŽ»åã¯å«ãŸããŸããã ãã®ããã°ãŸãã¯ãµãŒãããŒãã£ã®ãªã³ã¯ããã®æ å ±ã®äœ¿çšã«å¯Ÿãããã¹ãŠã®è²¬ä»»ãä¿èšŒãããæŸæ£ããŸãã ã¹ã¯ã¬ã€ãã³ã°æŽ»åã«åŸäºããåã«ãæ³åŸé¡§åã«çžè«ããã¿ãŒã²ãããŠã§ããµã€ãã®å©çšèŠçŽã確èªããããå¿ èŠãªèš±å¯ãååŸããŠãã ããã



