ماضی کے واقعات میں ہے ، ہم نے اس نیٹ ورک کے مواد کو سکرپٹ کرنے کے لئے Firecrawl کا استعمال کیا، مصنوعات کی مارکیٹنگ کو ذخیرہ کرنے کے لئے Pinecone کی طرح ایک ویکٹر ڈی بی، اور OpenAI API کو معلومات حاصل کرنے اور بہتر جوابات حاصل کرنے کے لئے ہماری درخواست پر کنٹیکٹ شامل کرنے کے لئے. لیب سیریز ویب اسکریپنگ کلب لیب سیریز ویب اسکریپنگ کلب یہ نقطہ نظر محدود ہے. context window size (the amount of information we can include in the prompt) محدود ہے، لہذا جوابات ہمیشہ اچھے نہیں تھے. جیسا کہ آئی آئی اے کے میدان چند ماہ میں تبدیل ہو جائے گا، یہ لگتا ہے کہ RAG اور Pinecone کا استعمال پرانے اسکول ہے. لہذا میں نے یہ چھوٹا سا تجربہ کیا ہے کہ MCP کو ویب سکریپنگ کے لئے کس طرح استعمال کیا جا سکتا ہے. پروٹوکول کے نمونے (MCP) پروٹوکول کے نمونے (MCP) ایک ماڈل کنٹیکٹ پروٹوکول کیا ہے؟ کے Anthropic کی طرف سے ابتدائی طور پر تیار ایک کھلا معیار ہے جو بڑے زبان ماڈل (LLMs) کو ایک معیاری انٹرفیس کے ذریعے بیرونی آلات اور اعداد و شمار کے ساتھ بات چیت کرنے کی اجازت دیتا ہے. AI ماڈلوں اور ان سسٹموں کے درمیان جہاں ڈیٹا رہتا ہے. ہر ڈیٹا ذرائع یا اسکریپنگ کے آلے کے لئے اپنی مرضی کے انضمام کی تعمیر کرنے کے بجائے، ڈویلپرز ایک MCP سرور کے ذریعے اپنے ڈیٹا یا افعال کو ظاہر کرسکتے ہیں. AI مددگار (MCP کلائنٹ) مسلسل ان وسائل کی درخواست کرسکتے ہیں، اور یہ معیاری، دو طرفہ کنکشن میٹا ڈیٹا، کنٹیکٹ، اور ہدایات کے ساتھ خام مواد کو بڑھاتا ہے تاکہ AI ماڈل معلومات کو زیادہ مؤثر طریقے سے تفسیر کرسکتے ہیں. Model Context Protocol (MCP) universal connector لیکن یہ کیسے کام کرتا ہے؟ لیکن یہ کیسے کام کرتا ہے؟ MCP ایک کلائنٹ سرور آرکیٹیکل کی پیروی کرتا ہے: میزبان ایپلی کیشن (مثال کے طور پر، ایک IDE یا AI مددگار) ایک MCP چلاتا ہے. (کلوڈ، کورسر، وغیرہ) جو MCP پروٹوکول کے ذریعے ایک یا زیادہ MCP سے منسلک کرتا ہے ہر سرور آپ کے مقامی مشین یا نیٹ ورک پر ایک مخصوص اعداد و شمار کے ذریعہ یا آلے (مثال کے طور پر، ایک ڈیٹا بیس، فائل سسٹم، یا ویب scraper) کے ساتھ انٹرفیس کرتا ہے، LLM کو ساختہ کنکشن یا اقدامات فراہم کرتا ہے. client servers ایک MCP سرور کو ظاہر کیا جا سکتا ہے (GET endpoints کے طور پر صرف پڑھنے کے لئے کنٹیکٹ ڈیٹا) اور (ایک کام یا کام کے ماڈل کے طور پر POST endpoints پر منسلک کر سکتے ہیں) کے لئے LLM. resources tools 2024 کے اوائل میں انسان کی طرف سے کھلی سافٹ ویئر MCP کو صنعت بھر میں قبولیت کی حوصلہ افزائی کرنے کے لئے. ، خصوصی API پر اعتماد کو کم کرنے اور AI انٹرویوز کو زیادہ ماڈیولر اور انٹرویوٹیبل بنائیں. common framework for AI-to-tool communication یہ ساختہ کنٹیکٹ کنٹرول سادہ نوٹس پر بہتر ہوتا ہے. ماڈل اب صرف متن کی ایک بلبل نہیں ملتا ہے؛ اس کے بجائے، یہ وسائل کے ذریعے ڈیٹا لوڈ کر سکتا ہے اور اچھی طرح سے مقرر کردہ ان پٹ / باہر آلات کے ساتھ کال آلات. مختصر طور پر، MCP ایک معیاری، محفوظ طریقہ فراہم کرتا ہے AI ماڈلوں میں کنٹیکٹ کی فراہمی اور کارروائیوں / نتائج کو حاصل کرنے کے لئے، جو پیچیدہ کاموں جیسے ویب کریکنگ میں خاص طور پر طاقتور ہے. MCP کا استعمال کیوں کریں؟ جیسا کہ ہم نے RAG کا استعمال کرتے ہوئے پہلے پوسٹس میں دیکھا ہے، ایک چیلنج ڈاؤن لوڈ کردہ مضمون کو نوٹ میں شامل کرنا تھا کیونکہ کنٹیکٹ سائز محدود ہے. ہم نے مختلف حلوں کی کوشش کی ہے، جیسے پینیکون پر مضامین کو ٹکڑے میں تقسیم کریں اور پھر صرف اس کی لمبائی کو کم کرنے کے لئے OpenAI کے ساتھ بنایا گیا خلاصہ محفوظ کریں. MCP کا استعمال کرتے ہوئے، خاص طور پر اس صورت میں، جہاں ہم اسے Cursor IDE کے اندر استعمال کر رہے ہیں، ہم ایک آلہ پیدا کرسکتے ہیں جو HTML کو نکالتا ہے اور اسے ایک فائل میں محفوظ کرتا ہے جو Cursor کی طرف سے پڑھا اور ٹکڑا کیا جا سکتا ہے اور XPaths پیدا کرنے کے لئے استعمال کیا جاتا ہے. MCP کا استعمال کرنے کا ایک اور دلچسپ پہلو یہ ہے کہ ہم پروگرامنگ اور پروگرامنگ انجینئرنگ کا موازنہ کرتے ہیں. حقیقت میں، ایک MCP آلے کی تخلیق ہمارے کوڈ میں ایک تقریب کی تخلیق کے طور پر ہے: ایک بار ہم IDE میں پروگرامنگ کی تخلیق کرتے ہیں، یہ کا جائزہ لیا جاتا ہے اور ہمارے آلات کو ہماری پروگرامنگ سے گمان کیا جا رہا ہے (جیسا کہ URL حاصل کرنے کے لئے) کی ضرورت ہے. آلے کے بجائے، ایک پروگرامنگ تقریب ہے، لہذا ایک پروگرامنگ کی بے ترتیب نہیں ہے، لیکن ایک انٹرویو کے ساتھ، ہم جانتے ہیں کہ پیداوار ہم توقع کرسکتے ہیں. یہ بہت اچھا ہے کیونکہ یہ پورے عمل کے غیر یقینی کو کم کرتا ہے اور اسی وقت، آخری لیکن کم از کم، MCP ایک معیاری ہے، اور نظریاتی طور پر، ایک بار جب ہم ایک سرور اپ اور چل رہا ہے، ہم اسے کسی بھی ماڈل اور آلے میں شامل کرسکتے ہیں جو اس کی حمایت کرتا ہے. کیا ہم MCP کا استعمال کریں گے ہم اپنے حل کو لاگو کرنے کے لئے دو اہم ٹیکنالوجی کا استعمال کریں گے: اور . MCP Python SDK Camoufox MCP پائٹون SDK پائٹون میں MCP سرورز (اور کلائنٹ) کی تعمیر کے لئے سرکاری لائبریری ہے. یہ مکمل MCP خصوصیات کو لاگو کرتا ہے، تمام بنیادی پروٹوکول پیغامات کا انتظام کرتا ہے تاکہ آپ کو آپ کی ضرورت کے وسائل اور آلات کو مقرر کرنے پر توجہ مرکوز کرسکتے ہیں. MCP Python SDK. اس SDK کے ساتھ، آپ کو صرف چند لائنوں کوڈ میں ایک MCP سرور پیدا کر سکتے ہیں. سرور کلاس جو کنکشنز کا انتظام کرتا ہے اور آپ کو آلے یا وسائل کے طور پر افعال رجسٹر کرنے کی اجازت دیتا ہے. اسے ایک فعال آلہ کے طور پر ماڈل کو ظاہر کرنے کے لئے. FastMCP @mcp.tool() SDK فہرست کے نتائج کو پیک کرتا ہے اور اسے ایک متوازن فارمیٹ میں AI کلائنٹ کو واپس بھیجتا ہے. مختصر طور پر، ایک MCP سرور قائم کرنا آسان ہے جو LLMs کو کنکٹیکٹ فراہم کرسکتا ہے یا ان کے نام پر کاموں کو انجام دے سکتا ہے. ویب سکرپنگ میں، ہیلتھ ایچ ٹی ایم ایل کو ہدف صفحات سے حاصل کرنے کے لئے (خاص طور پر ان کے anti-scraping اقدامات یا بھاری جاوا اسکرپٹ کے ساتھ) لڑائی کا نصف ہے. میں نے Camoufox کا استعمال کرنے کا فیصلہ کیا، جو اس طرح کے حالات کے لئے ڈیزائن کیا گیا ہے، تقریبا یقینی طور پر ہر صفحے سے HTML کو حاصل کرنے کے قابل ہونا چاہئے. یہ خاص طور پر سچ ہے کیونکہ MCP میرے کمپیوٹر پر مقامی طور پر چلتا ہے، لہذا مجھے کسی بھی پروکسی کی ضرورت نہیں ہوگی. اس کے سکرپٹ صلاحیتوں کے علاوہ، میں Camoufox کا استعمال کرنا چاہتا تھا کہ ایک MCP منطق بنائیں 0. اگر آپ وقت بچانا چاہتے ہیں تو، آپ استعمال کرسکتے ہیں یا ان کے پاس کچھ پہلے سے طے شدہ آلات ہیں جیسے ڈیٹا نکالنے اور صفحے کے ساتھ بات چیت، ہمارے لئے زندگی آسان بناتا ہے. Camoufox for HTML retrieval. براؤزر بیس MCP سرور ہائپر براؤزر 1 براؤزر بیس MCP سرور ہائپر براؤزر 1 ایک Camoufox scraper لکھنے کے لئے ایک MCP سرور کی تکنیکی تنصیب اب، ہم MCP سرور کی تعمیر کریں گے جو ہمیں تین مراحل میں ایک Camoufox scraper لکھنے میں مدد ملتی ہے. 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 کاپی رائٹ ( ) ڈپازٹری میں 79.MCP/MCPFiles فائل کے تحت محفوظ کیا جائے گا. xpath_server.py مرحلہ 1: ماحول کو منظم کریں سب سے پہلے، اس بات کو یقینی بنائیں کہ آپ کو ہم MCP SDK اور Camouf کی ضرورت ہوگی، جو آپ pip کے ذریعے انسٹال کرسکتے ہیں. Python 3.10+ pip install mcp camoufox کے پیکیج میں MCP Python SDK اور CLI آلے شامل ہیں. اس کے براؤزر بائنری حاصل کرنے کے لئے ایک اضافی قدم کی ضرورت ہوسکتی ہے (مثال کے طور پر، Stealth Firefox کو ڈاؤن لوڈ کرنے کے لئے - تفصیلات کے لئے Camoufox دستاویزات پر نظر ڈالیں). ایک بار ان کو انسٹال کیا جاتا ہے، آپ سرور کوڈ لکھنے کے لئے تیار ہیں. mcp Camoufox python -m camoufox fetch مرحلہ 2: MCP سرور کو شروع کریں ایک نیا پائٹون سکرپٹ بنائیں (پائٹون ریپیوٹر میں، یہ ہو جائے گا اس سکرپٹ میں، ہم ایک MCP سرور کو ابتدائی کریں گے اور ہمارے آلات کو مقرر کریں گے۔ MCP SDK کا استعمال آسان ہے: 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') یہ ایک خالی MCP سرور کو قائم کرنے کے لئے کافی ہے. مرحلہ 3: Camoufox کے ذریعے HTML Retrieval کو لاگو کریں ہم ایک آلہ چاہتے ہیں جو ایک URL فراہم کرتا ہے، صفحے کے HTML مواد کو پکڑتا ہے. ہم Camoufox کا استعمال کریں گے اس کو چھپانے کے لئے. کال کریں : 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)}" ڈیزائنر کے علاوہ، یہ ایک سادہ Camoufox کریکر ہے جو URL کو کھولتا ہے جو ہم کورسر کے اندر پٹ میں منتقل کریں گے اور ایک فائل میں HTML کوڈ کو ذخیرہ کرتا ہے. مرحلہ 4: میزائل کی بنیاد پر XPath Selectors پیدا کریں دوسرا آلہ ہمیں HTML کا تجزیہ کرنے کی ضرورت ہے اور اعداد و شمار کے لئے XPath Selectors پیدا کرتا ہے جو ہم کرایہ کرنا چاہتے ہیں. ایک نمونہ کے طور پر ایک نمونہ شناختی (کیا صفحہ یا نکالنے کے ماڈل کا استعمال کرنے کے لئے اشارہ کرنے کے لئے) لیتا ہے. generate_xpaths, اس کے علاوہ، آپ کو یہ معلوم ہو جائے گا کہ آپ کی مصنوعات کی قیمتوں میں سے ایک سے زیادہ قیمتوں میں سے ایک ہے ( مصنوعات کی ایک قسم کی مصنوعات کی ایک قسم کی مصنوعات کی ایک قسم ( ، ایک ہی مصنوعات کی تفصیلات کے ساتھ ایک صفحہ). 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 } اس صورت میں، ہم صرف چاہتے ہوئے پیداوار کی ساخت اور وہ میدانوں کی وضاحت کرتے ہیں جن کے لئے ہم منتخب کرنے کے لئے چاہتے ہیں. مرحلہ 5: نئے Camoufox scraper پیدا کریں اب جب ہم منتخب کرنے والے ہیں تو، ہم ایک Camoufox Scraper ماڈل کا مجموعہ کرنا چاہتے ہیں ( میں نے سیکھا کہ ایک Camoufox Scraper ماڈل کا استعمال کرنا ضروری ہے کیونکہ، اس کے بغیر، پیدا کردہ کوڈ عام طور پر ایک ہالووینشن ہے اور کام نہیں کرتا. 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"} اب ہمیں صرف اس MCP سرور کو چلانے کے لئے Cursor کو ترتیب دینے اور اس کے اوزار کا استعمال کرتے ہوئے ایک نوٹ لکھنے کی ضرورت ہے. مرحلہ 6.Cursor میں MCP سرور کا استعمال کرنا Cursor (AI-powered IDE) کے بارے میں عظیم چیزوں میں سے ایک یہ ہے کہ MCP سرورز کے لئے ان کی داخلہ کی حمایت AI کی صلاحیتوں کی توسیع کے طور پر ہے. ہم اپنے نئے بنایا MCP سرور کو Cursor میں انضمام کریں گے تاکہ AI مددگار اسے ویب سکریپنگ کے کاموں کو خود کار طریقے سے استعمال کرسکتے ہیں (جیسے ہمارے لئے XPath منتخب کرنے کے طور پر). Cursor میں سرور کو منسلک کرنے کے لئے، مندرجہ ذیل اقدامات پر عمل کریں: – 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 جب سرور شامل کیا جاتا ہے، نئے آلات کو مناسب طور پر خود کار طریقے سے استعمال کرسکتے ہیں. Cursor’s AI assistant (the “Composer” agent) عملی طور پر، جب آپ composer میں پوچھیں گے، "ایک HTML کو اس URL سے حاصل کریں اور پھر ماڈل PLP کا استعمال کرتے ہوئے XPath Selectors لکھیں گے"، مددگار آپ کو تصدیق کے لئے پوچھیں گے. آلہ اور پھر ایک fetch_page_content generate_xpath ہمارے ٹیسٹ قابل اعتماد طریقے سے ضروری اعداد و شمار کو حاصل کرنے کا طریقہ سمجھنے کے لئے نوٹ کے ساتھ چند گھنٹے کے تعامل کے بعد، میں نے پایا ہے کہ یہ سب سے زیادہ کام کرتا ہے جو میں نے Cloud 3.7 Sonnet کے ساتھ استعمال کرتے وقت پوچھا تھا (مجھے یقین ہے کہ یہ کوڈنگ کے لئے سب سے بہتر LLMs میں سے ایک ہے) ) : جیسا کہ ScrapeGraphAI سے Marco Vinciguerra نے ہماری تازہ ترین انٹرویو میں کہا جیسا کہ ScrapeGraphAI سے Marco Vinciguerra نے ہماری تازہ ترین انٹرویو میں کہا "آپ URL @https://www.gucci.com/it/it/ca/women/shoes-for-women-c-women-shoesThen, the XPath selectors using the template PLP. Use the downloaded HTML (downloaded_page.html file) to write working XPATH selectors.Write the selectors in a file called selectors.txt.Then, given the selectors previously created, Write a Camoufox scraper using the template PLP and the initial URL. If in doubt, read the selectors.txt file to understand how many fields and which selectors you have to use. Use the file Camoufox_template.py to build the scraper and customize with it the fields in output read by the PLP template." Cursor ایک Camoufox ٹیب کھولتا ہے، میں نے منتقل کیا URL پر براؤز کرتا ہے، ایک فائل میں HTML کو محفوظ کرتا ہے، اسے پڑھتا ہے، اور پھر XPATH منتخب کرنے والوں کو پیدا کرتا ہے اور ان کو دوسرے فائل میں محفوظ کرتا ہے. میں نے ایک فائل کے اندر ہر قدم کے نتائج کو محفوظ کرنے کا انتخاب کیا ہے تاکہ مندرجہ ذیل اقدامات انہیں پڑھ سکتے ہیں اور آخر میں ان کے مواد کو کنٹیکٹ ونڈوز میں منتقل کرنے کے بجائے خود کار طریقے سے ٹکٹ کر سکتے ہیں، جو بہت چھوٹا ہوسکتا ہے. پیدا شدہ کریکر پہلی بار چلایا جا سکتا ہے، لہذا یہ تکنیکی طور پر درست ہے، اور نتائج بہت اچھے ہیں. اس ویب سائٹ کے بارے میں کچھ نہیں کہنے کے بغیر، اسکرینر نے تمام میدانوں کو درست طریقے سے گھوم لیا، جو بہت اچھا ہے اور اس ٹیسٹ سے مجھے انتظار سے زیادہ ہے. میں اب بھی حل کی قابل اعتمادیت کے بارے میں کچھ نگرانی رکھتا ہوں. میں ہر بار ایک ہی پینٹ کو چلانے کے لئے ایک ہی نتائج نہیں ملتا، جو ناپسندیدہ ہوسکتا ہے کیونکہ آپ کو یہ معلوم نہیں ہے کہ آپ اس عمل کو ٹھیک کرنے کے لئے کس طرح جانتے ہیں اگر آپ نہیں جانتے ہیں کہ اس سے کیا توقع کرنا ہے. دوسرا مسئلہ شاید ایک فوری انجینئرنگ سے زیادہ ہے. output data structure is not the one I expected, but the one that the assistant found on the Camoufox scraper template. I still have not figured out how to solve this, but I am sure, in some way, it can be done. اگلے ایپلی کیشن میں، ہم Cursor کو ہماری ویب سکرپنگ AI مددگار بنانے کے لئے ہمارے سفر پر جاری رکھیں گے. یہ مضمون Pierluigi Vinciguerra کی "لابیس" سیریز کا حصہ ہے. ویب سکرپنگ کے بارے میں مزید معلومات کے لئے اس کے Substack صفحے کو چیک کریں. یہ مضمون حصہ ہے سیریز میں اسے چیک کریں Web Scraping کے بارے میں مزید معلومات کے لئے صفحہ. ’لڑکی‘ Pierluigi Vinciguerra کے بارے میں Substack کے ’لڑکی‘