سلام دوستان! تو این مقاله میخوایم ببینیم XPath چیه و چطور میتونه بهمون کمک کنه. شاید اسمش یکم پیچیده به نظر برسه، ولی خیالتون راحت، خیلی سادهتر از اونیه که فکر میکنید. فرض کنید یه کتاب خیلی بزرگ دارید و میخواید یه قسمت خاص ازش رو پیدا کنید. XPath مثل یه آدرس دقیق عمل میکنه که بهتون میگه دقیقا کجا رو باید نگاه کنید.
XPath در واقع یه زبون پرس و جو (query language) برای انتخاب گرهها (nodes) از یه سند XML یا HTML هست. این یعنی چی؟ یعنی اگه یه فایل XML یا HTML دارید (که خیلی از اطلاعات توی وب به این شکل ذخیره میشن)، میتونید از XPath استفاده کنید تا اطلاعات خاصی رو از داخلش بیرون بکشید. مثلا میتونید همهی تگهای <p> رو پیدا کنید، یا مقدار یه خصوصیت خاص رو بخونید.
XPath خیلی جاها کاربرد داره، ولی بیشتر از همه توی اتوماسیون تست وب (web automation testing) و استخراج اطلاعات از وبسایتها (web scraping) استفاده میشه. فرض کنید میخواید مطمئن شید که یه دکمه توی وبسایتتون درست کار میکنه. میتونید از XPath استفاده کنید تا اون دکمه رو پیدا کنید و بعد روش کلیک کنید. یا فرض کنید میخواید قیمت همهی لپتاپها رو از یه فروشگاه آنلاین جمعآوری کنید. بازم XPath به کمکتون میاد.
قبل از اینکه بریم سراغ مثالها، بهتره با یه سری اصطلاح مهم آشنا بشیم:
حالا بیاید یه چندتا مثال ساده ببینیم تا بهتر متوجه بشید:
فرض کنید یه سند HTML ساده داریم به این شکل:
<html> <body> <h1>سلام دنیا!</h1> <p>این یه پاراگرافه.</p> <a href="https://example.com">یه لینک</a> </body> </html>
حالا با استفاده از XPath میتونیم این اطلاعات رو استخراج کنیم:
XPath | توضیح | نتیجه |
---|---|---|
/html/body/h1 |
انتخاب تگ <h1> داخل <body> و <html> | <h1>سلام دنیا!</h1> |
//p |
انتخاب همهی تگهای <p> | <p>این یه پاراگرافه.</p> |
//a/@href |
انتخاب مقدار خصوصیت `href` از همهی تگهای <a> | https://example.com |
//a[text()='یه لینک'] |
انتخاب تگ <a> که متن داخلش 'یه لینک' باشه. | <a href="https://example.com">یه لینک</a> |
//h1/text() |
انتخاب متن داخل تگ <h1> | سلام دنیا! |
XPath یه سری توابع هم داره که کارمون رو راحتتر میکنن. چندتا از مهمترینهاش اینا هستن:
text()
: برای گرفتن متن داخل یه گره.contains(string1, string2)
: برای اینکه ببینیم یه رشته شامل یه رشتهی دیگه هست یا نه.starts-with(string1, string2)
: برای اینکه ببینیم یه رشته با یه رشتهی دیگه شروع میشه یا نه.ends-with(string1, string2)
: برای اینکه ببینیم یه رشته با یه رشتهی دیگه تموم میشه یا نه.count()
: برای شمردن تعداد گرهها.
مثلا، میتونیم از contains()
استفاده کنیم تا تگ <a> که `href` اون شامل "example" هست رو پیدا کنیم: //a[contains(@href, 'example')]
* //
در مقابل /
: فرقشون اینه که //
کل سند رو جستجو میکنه، ولی /
فقط فرزند مستقیم گرهی فعلی رو نگاه میکنه.
* موقعیتهای ایندکس: شما به کمک پرانتز [ ] میتونید ایندکس یک عنصر رو مشخص کنید. به طور مثال //p[1]
اولین تگ <p> رو انتخاب میکنه و //p[last()]
اخرین تگ <p> رو انتخاب میکنه.
* استفاده از * : علامت * به معنی "هر عنصر" هست. مثلا /html/body/*
یعنی "همهی فرزندان تگ body ".
XPath یه ابزار قدرتمند برای کار کردن با دادههای XML و HTML هست. با یادگیری مفاهیم پایه و چندتا مثال ساده، میتونید ازش برای استخراج اطلاعات، اتوماسیون تست، و خیلی کارهای دیگه استفاده کنید. امیدوارم این مقاله براتون مفید بوده باشه و بتونید از XPath توی پروژههای خودتون استفاده کنید. یادگیری این تکنیک برای توسئه دهندگان وب, توسعه دهنده های نرم افزار و حتی کاربران عادی که نیاز به کار با داده دارن بسیار مهم و سودمند می باشد. سعی کنید تمرین کنی تا با این فنن به طور کامل آشنا بشی.
XPath, XML, HTML, پرس و جو, گره, عنصر, خصوصیت, مسیر, اتوماسیون تست, استخراج اطلاعات, وبسکرپینگ
//
و /
در XPath چیست؟//
کل سند را جستجو میکند، در حالی که /
فقط فرزندان مستقیم گره فعلی را بررسی میکند.text()
استفاده کنید. مثلاً //h1/text()
متن داخل تگ <h1> را برمیگرداند.امتیاز شما به این مطلب
امتیاز: 5 از 5 (مجموع 1 رای)
اولین نفری باشید که در مورد این مقاله نظر می دهید!
techfeed.ir© 2024 All rights reserved