خزشگر(crawler) موتور جستوجوی ترب صفحهی محصولات مختلف را به صورت دورهای crawl کرده و اطلاعات محصول مثل قیمت، نام و ... آن محصول را از صفحهی HTML آن محصول استخراج میکند.
برای اینکه بتوانیم اطلاعات محصول یک فروشگاه را بهدرستی استخراج کنیم، لازم است جایگاه دقیق اطلاعات محصول در صفحهی HTML را داشته باشیم. در ترب، این اطلاعات با کمک هوشمصنوعی استخراج میشود.
برای اینکه موقعیت یک متن در صفحهی HTML را به صورت دقیق نشان دهیم، از زبانی به اسم XPath استفاده میکنیم. XPath یک Query Language است که با اجرای آن بر روی یک صفحهی HTML میتوان متن قسمتی از صفحه را مشخص کرده و برگرداند. برای مثال، تصویر زیر یک صفحهی HTML و یک XPath را نشان می دهد:

در این سوال شما یک نمونهی ساده شدهی این فرایند را پیادهسازی خواهید کرد. آدرس صفحهی یک محصول موجود و یک محصول ناموجود از فروشگاه به شما دادهشده و از شما میخواهیم که با کمک LLM برای آن فروشگاه XPath های مناسب برای نام، قیمت و موجودی آن را ارائه دهید. در نهایت کد شما باید یک dict با کلیدهای زیر را برگرداند.
#### نتایج مورد انتظار:
- **کلید availability_xpath:** این XPath در صفحهی محصول ِناموجود، با هیچ عنصری در صفحه نباید match شود و در صفحهی محصول ِموجود، حداقل باید یک جواب داشته باشد.
- **کلید name_xpath**: باید در هر دو صفحه دقیقا با یک عنصر match شده و نام محصول را انتخاب کند.
- **کلید final_price_xpath:** فقط در صفحهی محصول موجود، باید دقیقاً با یک عنصر match شود و قیمت نهایی را نشان دهد.
**نکته:** ممکن است چندین جواب صحیح وجود داشته باشد. هر ارسالی که به جواب صحیح برسد قابل قبول است.
نمونه کد مورد انتظار:
```python
from openai import OpenAI
class XPathExtractor:
def __init__(self, api_key):
self.client = OpenAI(api_key=api_key,base_url="https://turbo.torob.com/v1")
def run(self, available_link, unavailable_link):
return {
"name_xpath": "[Your result]",
"final_price_xpath": "[Your result]",
"availability_xpath": "[Your result]"
}
```
# مثال
ورودی:
```
extractor = XPathExtractor(api_key)
extractor.run("https://turbo.torob.com/xpath/sample_1_available.html",
"https://turbo.torob.com/xpath/sample_1_unavailable.html")
```
خروجی:
```
{
"final_price_xpath": "//span[@class='final-price']/text()",
"availability_xpath": "//div/span[@class='availability']",
"name_xpath": "/html/body/div/h1"
}
```
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.