Aiemmissa tapahtumissa on , käytimme Firecrawlia tämän uutiskirjeen sisällön kaavimiseen, vektorin DB: n, kuten Pineconen, artikkeleiden merkintöjen tallentamiseen ja OpenAI API: n tiedon hankkimiseen ja asiayhteyden liittämiseen kehotukseen saadaksemme parempia vastauksia. Laboratorion sarja Sivut, jotka ovat luokassa Web Scraping Club Laboratorion sarja Sivut, jotka ovat luokassa Web Scraping Club Kontekstiikkunan koko (tietojen määrä, jonka voimme sisällyttää kyselyyn) on rajallinen, joten vastaukset eivät aina olleet hyviä. Koska tekoälyn maisema muuttuu muutaman kuukauden kuluttua, näyttää siltä, että RAG: n ja Pineconen käyttö on vanha koulu. , joten olen suorittanut tämän pienen kokeilun nähdäkseni, miten MCP: tä voidaan käyttää web-kaavintaan. Yhteenvetoprotokollan mallintaminen (MCP) Yhteenvetoprotokollan mallintaminen (MCP) Mikä on Context Protocol? Sillä on Anthropicin alun perin kehittämä avoin standardi, joka mahdollistaa suurten kielimallien (LLM) vuorovaikutuksen ulkoisten työkalujen ja tietojen kanssa standardoidun rajapinnan kautta. AI-mallien ja järjestelmien välillä, joissa data elää. Sen sijaan, että kehittäjät rakentaisivat räätälöityjä integrointeja jokaiselle tietolähteelle tai kaavintatyökalulle, kehittäjät voivat paljastaa tietonsa tai toiminnallisuutensa MCP-palvelimen kautta. AI-avustajat (MCP-asiakkaat) voivat johdonmukaisesti pyytää näitä resursseja, ja tämä standardoitu, kaksisuuntainen yhteys rikastuttaa raaka-aineistoa metatietoilla, kontekstilla ja ohjeilla, jotta AI-mallit voivat tulkita tietoa tehokkaammin. Model Context Protocol (MCP) universal connector Mutta miten se toimii? Mutta miten se toimii? MCP noudattaa asiakkaan ja palvelimen arkkitehtuuria: isäntäsovellus (esim. IDE tai AI-avustaja) käyttää MCP:tä (Claude, Cursor jne.) joka yhdistää MCP-protokollan kautta yhteen tai useampaan MCP:ään Jokainen palvelin liittää tietyn tietolähteen tai työkalun (esimerkiksi tietokannan, tiedostojärjestelmän tai web-kaavin) paikalliseen koneeseen tai verkkoon, joka tarjoaa jäsennellyn kontekstin tai toimet LLM: lle. client servers MCP-palvelin voi asettaa (Lue-only-kontekstitiedot vastaavat GET-päätteitä) ja (toimet tai toiminnot malli voi vedota analogisesti POST päätepisteitä) LLM. resources tools Anthropic avoimen lähdekoodin MCP alussa 2024 kannustaa teollisuuden laajuista hyväksyntää. , vähentämällä riippuvuutta omistautuneista API-rajapinnoista ja tekemällä AI-integraatioista modulaarisempia ja yhteentoimivia. common framework for AI-to-tool communication Tämä jäsennelty kontekstinhallinta paranee yksinkertaisilla kehotuksilla. Malli ei enää saa pelkästään tekstiä; sen sijaan se voi ladata tietoja resurssien kautta ja soittaa työkaluja hyvin määritellyillä syöttöillä / lähtöillä. Yhteenvetona voidaan todeta, että MCP tarjoaa standardoidun, turvallisen tavan syöttää kontekstia AI-malleihin ja vastaanottaa toimia / tuloksia, mikä on erityisen tehokasta monimutkaisissa tehtävissä, kuten web-kaavinta. Miksi käyttää MCP? Kuten olemme nähneet aiemmissa viesteissä käyttämällä RAG: tä, yksi haaste oli lisätä ladattu artikkeli esitteeseen, koska kontekstin koko on rajoitettu. Yritimme erilaisia ratkaisuja, kuten jakaa artikkeleita pineconeihin ja tallentaa sitten vain yhteenveto, joka on tehty OpenAI: llä sen pituuden vähentämiseksi. Käyttämällä MCP: tä, erityisesti tässä tapauksessa, jossa käytämme sitä Cursor IDE: ssä, voimme luoda työkalun, joka poistaa HTML: n ja tallentaa sen tiedostoon, jota Cursor voi lukea ja murskata ja käyttää XPathin tuottamiseen. Toinen mielenkiintoinen näkökohta MCP: n käyttämisessä on se, että sekoitamme ohjelmoinnin ja käskytekniikan. Itse asiassa MCP-työkalun luominen on kuin toiminnon luominen koodissamme: kun olemme luoneet käsky IDE: ssä, tämä arvioidaan ja kutsuu työkalujamme tarpeellisella argumentilla (kuten URL-osoitteella saadaksesi) arvaamalla käskyämme. Työkalu itse on sen sijaan ohjelmoitu toiminto, joten käskyä ei ole hämmentynyt, mutta annettu syöttö, tiedämme tuloksen, jota voimme odottaa. Tämä on hienoa, koska se vähentää koko prosessin epävarmuutta ja samanaikaisesti avaa lukemattomia käyttötapauksia rikkauttaaksesi keskustelusi kontekstia LLM: llä. Viimeisenä mutta ei vähäisimpänä, MCP on standardi, ja teoriassa, kun meillä on palvelin ja käynnissä, voimme liittää sen mihin tahansa malliin ja työkaluun, joka tukee sitä. Mitä aiomme käyttää MCP Käytämme ratkaisumme toteuttamiseen kahta keskeistä teknologiaa: ja . MCP Python SDK Camoufox MCP Python SDK on virallinen kirjasto MCP-palvelinten (ja asiakkaiden) rakentamiseen Pythoniin. Se toteuttaa koko MCP-spesifikaation, käsittelee kaikkia taustalla olevia protokollan viestejä, jotta voit keskittyä määrittelemään tarvitsemasi resurssit ja työkalut. MCP Python SDK. Tämän SDK:n avulla voit luoda MCP-palvelimen vain muutamalla koodirivillä. palvelinluokka, joka hallinnoi yhteyksiä ja jonka avulla voit rekisteröidä toimintoja työkaluina tai resursseina koristeiden kautta. esittää sitä mallille toimivana työkaluna. FastMCP @mcp.tool() SDK pakkaa funktion tuloksen ja lähettää sen takaisin AI-asiakkaalle johdonmukaisessa muodossa. Yhteenvetona voidaan todeta, että MCP-palvelimen asentaminen, joka voi syöttää kontekstia LLM: lle tai suorittaa tehtäviä sen puolesta, on yksinkertaista. Web-kaavinta, saada raaka HTML kohdesivuilta (erityisesti ne, joilla on anti-kaavinta toimenpiteitä tai raskas JavaScript) on puolet taistelusta. Päätin käyttää Camoufox, joka on avoimen lähdekoodin piilotettu selaus työkalu suunniteltu tällaisiin skenaarioihin, on lähes varma, että voit saada HTML jokaisesta sivusta. Tämä on erityisen totta, koska MCP toimii paikallisesti koneellani, joten en tarvitse minkäänlaista välityspalvelua. Sen piilotettujen ominaisuuksien lisäksi halusin käyttää Camoufox rakentaa MCP logiikkaa 0. Jos haluat säästää aikaa, voit käyttää tai Heillä on joitakin valmiita työkaluja, kuten tietojen poistaminen ja vuorovaikutus sivun kanssa, mikä tekee elämästä helpompaa meille. Camoufox for HTML retrieval. BrowserBase MCP -palvelin Hyperbrowser Yksi BrowserBase MCP -palvelin Hyperbrowser Yksi MCP-palvelimen tekninen toteutus Camoufox-kaavin kirjoittamiseen Nyt rakennamme MCP-palvelimen, joka auttaa meitä kirjoittamaan Camoufox-kaavin kolmessa vaiheessa. will be a tool that opens Camoufox and stores the HTML of the target page on a file. fetch_page_content will be a tool that reads the HTML file and, given a template of output data, creates the selectors, again saving them to a file. That’s why we want it flexible enough to handle different page types (for example, a product listing page vs. a product detail page in e-commerce). generate_xpaths will be a tool that reads the selectors and a template of Camoufox spider ( ) and creates a new one based on that and the selectors just created. write_camoufox_scraper Camoufox_template.py Käyttöliittymä ( ) tallennetaan tallennukseen kansioon 79.MCP/MCPFiles. xpath_server.py Vaihe 1: Luo ympäristö Varmista ensin, että sinulla on Tarvitsemme MCP SDK:n ja Camoufin, jotka voit asentaa pipin kautta. Python 3.10+ pip install mcp camoufox Sillä Paketti sisältää MCP Python SDK:n ja CLI-työkalun. saattaa vaatia ylimääräistä vaihetta selaimen binäärin hakemiseen (esimerkiksi ladata piilotettu Firefox – katso Camoufox-tiedostoja yksityiskohtia). Kun nämä on asennettu, olet valmis kirjoittamaan palvelimen koodi. mcp Camoufox python -m camoufox fetch Vaihe 2: Aloita MCP-palvelin Luo uusi Python-skripti (varastossa, se on Tässä käsikirjoituksessa aloitamme MCP-palvelimen ja määrittelemme työkalumme. xpath_server.py from mcp.server.fastmcp import FastMCP import asyncio from camoufox.async_api import AsyncCamoufox import time import os mcp = FastMCP("Scrapy XPath Generator") ..... coded tools .... if __name__ == "__main__": # Initialize and run the server mcp.run(transport='stdio') Tämä riittää tyhjän MCP-palvelimen asentamiseen. Vaihe 3: HTML Retrievalin toteuttaminen Camoufoxin kautta Haluamme työkalun, joka URL-osoitteen avulla kerää sivun HTML-sisällön. Käytämme Camoufoxia tekemään tämän salaisella tavalla. Soittaminen : tool fetch_page_content HTML_FILE_PATH = "/Users/pierluigivinciguerra/TWSC/Code/TheWebScrapingClub/79.MCP/downloaded_page.html" # File to store the downloaded HTML CAMOUFOX_FILE_PATH = "/Users/pierluigivinciguerra/TWSC/Code/TheWebScrapingClub/79.MCP/camoufox_template.py" @mcp.tool() async def fetch_page_content(url: str) -> str: global latest_html """Fetch page HTML using Camoufox stealth browser.""" print(f"[DEBUG] Fetching URL: {url}") try: async with AsyncCamoufox(humanize=True) as browser: page = await browser.new_page() await page.goto(url) time.sleep(10) latest_html = await page.content() with open(HTML_FILE_PATH, "w", encoding="utf-8") as f: f.write(latest_html) print("[DEBUG] HTML stored for later use") return "HTML fetched and stored successfully." except Exception as e: print(f"[ERROR] {e}") return f"Error fetching page: {str(e)}" Lukuun ottamatta sisustinta, se on yksinkertainen Camoufox-kaavin, joka avaa URL-osoitteen, jonka läpäisemme Cursorin sisällä ja tallentaa HTML-koodin tiedostoon. Vaihe 4: Luo XPath-valinnat mallin perusteella Toinen työkalu, jota tarvitsemme, analysoi HTML: n ja tuottaa XPath-valitsijoita niille tiedoille, joita haluamme kaapata. joka ottaa mallin tunnisteen (joka osoittaa, millaista sivua tai uuttamismallia käytetään) argumenttina. generate_xpaths, Tällöin laitteen laitteen laitteen laitteen laitteen laitteen laitteen laitteen laitteen laite ( , yksi sivu, jossa on useita tuotteita lueteltu) ja toinen tuotteen yksityiskohtainen sivu ( , sivu, jossa on yhden tuotteen yksityiskohdat). PLP PDP @mcp.tool() def generate_xpaths(template: str) -> dict: """Write XPATH selectors for the requested fields using the downloaded HTML file.""" if not os.path.exists(HTML_FILE_PATH): return {"error": f"No HTML file found. Run fetch_page_content() first."} if template.lower() == "plp": fields = "product title, product link, product price, product image, product code" elif template.lower() == "pdp": fields = "product title, product price, product description, product image, product color, product size, product code" else: return {"error": "Unknown template type"} # Return the HTML and requested fields so Cursor can analyze them return { "message": "Print the XPath expressions for the requested fields using the variable latest_html.", "requested_fields": fields } Tässä tapauksessa määrittelemme yksinkertaisesti halutun tulostusrakenteen ja kentät, joille haluamme luoda valinnat. Vaihe 5: Luo uusi Camoufox kaavin Nyt kun meillä on valikoijat, haluamme yhdistää Camoufox Scraper -mallin ( Olen oppinut, että Camoufox Scraper -mallin käyttö on välttämätöntä, koska ilman sitä luotu koodi on yleensä hallusinaatio ja ei toimi. Camoufox_template.py @mcp.tool() def write_camoufox_scraper(template: str, url: str) -> dict: print(f"[DEBUG] Writing scraper for template: {template} and URL: {url}") """Reads file Camoufox_template.py and uses it to write a new Camoufox scraper with the requested fields and starting from the url""" with open(CAMOUFOX_FILE_PATH, "r", encoding="utf-8") as f: latest_html = f.read() return{"message": "Using this template, write a working scraper with the requested fields and starting URL"} Se on se; nyt meidän tarvitsee vain konfiguroida Cursor tämän MCP-palvelimen suorittamiseen ja kirjoittaa kehotus, joka käyttää sen työkaluja. Vaihe 6. MCP-palvelimen käyttäminen Cursorissa Yksi Cursorin suurista asioista (AI-pohjainen IDE) on sen sisäänrakennettu tuki MCP-palvelimille, jotka ovat laajennuksia AI: n ominaisuuksiin. integroimme äskettäin luodun MCP-palvelimemme Cursoriin, jotta AI-avustaja voi käyttää sitä web-kaavintatehtävien automatisointiin (kuten XPath-valikoimien luominen meille). Jos haluat muodostaa yhteyden Cursoriin, noudata seuraavia ohjeita: – In Cursor IDE, go to the settings menu. Open Cursor Settings – Under the Features section, find . (This requires Cursor v0.45.6+ or later, which supports custom MCP server integration.) Navigate to MCP Servers MCP Servers – Click the “+ Add New MCP Server” button. This will prompt you to enter details for the server. Add a New MCP Server – Give it a name like “Scrapy XPath Server” (any friendly name). For , select (since we will run a local command to start the server). For , enter the command to launch your server. For example, if your script is saved at /path/to/xpath_server.py, you might put it in the box. Configure the server Type "command" Command – After entering the details, save the configuration. You should see your MCP server listed in Cursor’s MCP Servers section. Cursor will now launch this server (via the given command) and maintain a connection to it. You might see a green light next to the MCP server’s name. Save and verify Kun palvelin on lisätty, Voit käyttää uusia työkaluja automaattisesti tarvittaessa. Cursor’s AI assistant (the “Composer” agent) Käytännössä, kun kysyt säveltäjältä, "Hanki HTML tästä URL-osoitteesta ja kirjoita sitten XPath-valinnat mallin PLP: n avulla", avustaja pyytää vahvistusta käynnistääksesi Työkalu ja sen jälkeen Yhden fetch_page_content generate_xpath Meidän testit Muutaman tunnin vuorovaikutuksen jälkeen kehotuksen kanssa ymmärtääkseni, miten tarvitaan tarvittavat tiedot luotettavasti, olen havainnut, että tämä tekee useimmat pyydetyt tehtävät, kun niitä käytetään Cloud 3.7 Sonnetin kanssa (vahvistaen, että se on yksi parhaista LLM: stä koodaukseen ) ja kuten Marco Vinciguerra ScrapeGraphAI sanoi viimeisimmissä haastatteluissamme kuten Marco Vinciguerra ScrapeGraphAI sanoi viimeisimmissä haastatteluissamme ”Kirjoita URL @https://www.gucci.com/it/it/ca/women/shoes-for-women-c-women-shoesSitten kirjoita XPath-valinnat käyttämällä mallia PLP. Käytä ladattua HTML-tiedostoa (downloaded_page.html-tiedosto) kirjoittamaan toimivat XPATH-valinnat.Kirjoita valinnat tiedostoon nimeltä selectors.txt.Sitten, kun otetaan huomioon aikaisemmin luodut valinnat, Kirjoita Camoufox-kaavin käyttämällä mallia PLP ja alkuperäistä URL-osoitetta. Jos epäilet, lue selectors.txt-tiedosto ymmärtääksesi kuinka monta kenttää ja mitä valinnat sinun täytyy käyttää. Käytä Camoufox_ Cursor avaa Camoufox-välilehden, selaa välitettyä URL-osoitetta, tallentaa HTML: n tiedostoon, lukee sen ja luo sitten XPATH-valinnat ja tallentaa ne toiseen tiedostoon. Luotu kaavin on suoritettavissa ensimmäistä kertaa, joten se on teknisesti oikein, ja tulokset ovat melko hyviä. Kaavin, sanomatta mitään verkkosivustosta, asetti oikein kaikki kentät, mikä on erinomaista ja enemmän kuin odotin tästä testistä. Minulla ei ole samoja tuloksia joka kerta, kun käytän samaa kehotinta, mikä voi olla turhauttavaa, koska et tiedä, miten korjata prosessi, jos et tiedä, mitä odottaa siitä. Toinen ongelma on todennäköisesti pikemminkin nopea tekniikka. Lähtötietorakenne ei ole se, jota odotin, vaan se, jonka avustaja löysi Camoufox-kaavinmalleista. En ole vielä keksinyt, miten tämä ratkaistaan, mutta olen varma, että jotenkin se voidaan tehdä. Seuraavassa jaksossa jatkamme matkaa tekemään Cursorista web-kaavinta-AI-avustajan. Artikkeli on osa Pierluigi Vinciguerra "Lab" -sarjaa. Katso hänen Substack-sivu lisätietoja Web Scrapingista. Artikkeli on osa Pierluigi Vinciguerra "Lab" -sarjaa. Katso hänen Substack-sivu lisätietoja Web Scrapingista. ”Laboratorio”