Web Scraper Library — اردو/کھرچنی
The اردو/کھرچنی library wraps BeautifulSoup4 for parsing HTML — either from a string or fetched live from a URL. It provides Urdu-named properties and methods for navigating and extracting page content.
اردو:
اردو/کھرچنیلائبریری BeautifulSoup4 کا ریپر ہے جو HTML پارس کرتا ہے — چاہے متن (string) سے ہو یا براہ راست URL سے۔ یہ ویب صفحات سے ڈیٹا نکالنے کے لیے اردو نامی خاصیات اور طریقے فراہم کرتا ہے۔
Import:
Table of Contents
Creating a Document — دستاویز بنانا
اردو: HTML دستاویز بنانے کے دو طریقے ہیں:
صفحہ_بناؤ()سے HTML متن پارس کریں، یاکھرچو()سے URL سے براہ راست صفحہ حاصل کریں اور پارس کریں۔
صفحہ_بناؤ — Parse HTML string — HTML متن پارس کریں
| Parser string | Backend | Notes |
|---|---|---|
"html.parser" |
Python stdlib | No extra dependencies, always available |
"lxml" |
lxml | Fastest; pip install lxml required |
"html5lib" |
html5lib | Most lenient, handles broken HTML; pip install html5lib required |
کھرچو — Fetch URL and parse (async) — URL سے حاصل کریں اور پارس کریں
Internally performs an HTTP GET and parses the response body. Returns a صفحہ object.
اردو: اندرونی طور پر HTTP GET کرتا ہے اور جواب کی باڈی پارس کرتا ہے۔ ایک
صفحہآبجیکٹ واپس کرتا ہے۔ اضافی سرخیاں دے کر بعض ویب سائٹس کو براؤزر کی درخواست جیسا لگائیں۔
صفحہ — Page object — صفحہ آبجیکٹ
صفحہ is a specialised element representing the whole document.
اردو:
صفحہپوری دستاویز کو نمائندہ کرنے والا خصوصی عنصر ہے۔ اس کی.عنوانخاصیت صفحے کا<title>ٹیگ متن دیتی ہے اور یہ_عنصرکی تمام خاصیات اور طریقے وراثت میں لیتا ہے۔
| Property | Type | Description |
|---|---|---|
.عنوان |
string | Text content of the <title> tag |
The صفحہ object inherits all _عنصر properties and methods listed below.
_عنصر — Element object — عنصر آبجیکٹ
اردو:
_عنصرایک HTML عنصر کو نمائندہ کرتا ہے۔ خاصیات سے ٹیگ، شناخت، متن، HTML اور والدین/بچے تک رسائی ملتی ہے۔ طریقوں سے عناصر تلاش کریں — ٹیگ نام، خصوصیات یا CSS سلیکٹر سے۔
Properties — خاصیات
| Property | Type | Description |
|---|---|---|
.ٹیگ |
string | HTML tag name, e.g. "div", "a" |
.شناخت |
string | null | Value of the id attribute |
.متن |
string | All text inside the element, including nested tags |
.صاف_متن |
string | Text stripped of leading/trailing whitespace |
.اندرونی_html |
string | Inner HTML — the element's contents as a string |
.بیرونی_html |
string | Outer HTML — the element itself plus its contents |
.خوبصورت |
string | Prettified (indented) HTML string |
.خصوصیات |
object | Dict of all HTML attributes |
.والد |
_عنصر | null | Parent element |
.بچے |
list | Direct child elements (tags only, no text nodes) |
.اگلا |
_عنصر | null | Next sibling element |
.پچھلا |
_عنصر | null | Previous sibling element |
elem["href"] |
string | null | Get the value of any attribute by name |
Methods — طریقے
اردو: چار تلاش طریقے:
.تلاش()پہلا ملنے والا عنصر دیتا ہے،.سب_تلاش()سب ملنے والے دیتا ہے،.چنو()CSS سلیکٹر سے سب دیتا ہے اور.ایک_چنو()CSS سلیکٹر سے پہلا دیتا ہے۔
| Method | Returns | Description |
|---|---|---|
.تلاش(ٹیگ, خصوصیات={}) |
_عنصر | null | First matching child element |
.سب_تلاش(ٹیگ, خصوصیات={}, حد=0) |
list | All matching elements (0 = no limit) |
.چنو(css_selector) |
list | All elements matching a CSS selector |
.ایک_چنو(css_selector) |
_عنصر | null | First element matching a CSS selector |
Attribute shorthand:
Examples — مثالیں
Example 1 — Parse an HTML string — HTML متن پارس کرنا
اردو:
صفحہ_بناؤ()سے HTML متن پارس کریں، پھر.تلاش()سے عناصر نکالیں۔.صاف_متنسے صاف متن اور["href"]سے خصوصیات پڑھیں۔
درآمد { صفحہ_بناؤ } سے "اردو/کھرچنی"
متغیر html = """
<html>
<head><title>اردو ویب سائٹ</title></head>
<body>
<h1 id="سرخی">خوش آمدید!</h1>
<p class="تعارف">یہ اردو پروگرامنگ زبان ہے۔</p>
<p>مزید معلومات کے لیے <a href="https://example.com">یہاں</a> کلک کریں۔</p>
</body>
</html>
"""
متغیر صف = صفحہ_بناؤ(html)
لکھو("عنوان:", صف.عنوان)
متغیر سرخی = صف.تلاش("h1")
لکھو("سرخی:", سرخی.صاف_متن)
لکھو("سرخی ID:", سرخی.شناخت)
متغیر پیرا = صف.تلاش("p", { "class": "تعارف" })
لکھو("تعارف:", پیرا.صاف_متن)
متغیر ربط = صف.تلاش("a")
لکھو("لنک متن:", ربط.صاف_متن)
لکھو("لنک URL:", ربط["href"])
Output:
عنوان: اردو ویب سائٹ
سرخی: خوش آمدید!
سرخی ID: سرخی
تعارف: یہ اردو پروگرامنگ زبان ہے۔
لنک متن: یہاں
لنک URL: https://example.com
Example 2 — Scrape page title and all links — صفحہ عنوان اور تمام روابط
اردو:
کھرچو()سے لائیو URL کھرچیں، صفحے کا عنوان اور تمام<a>ٹیگز نکالیں۔.سب_تلاش("a")تمام روابط فہرست دیتا ہے۔
درآمد { کھرچو } سے "اردو/کھرچنی"
غیر_متزامن فنکشن روابط_نکالیں(url) {
لکھو("صفحہ کھرچ رہے ہیں:", url)
متغیر صف = انتظار کھرچو(url)
لکھو("عنوان:", صف.عنوان)
لکھو("-" * 50)
متغیر تمام_روابط = صف.سب_تلاش("a")
لکھو(`کل روابط: ${تمام_روابط.length}`)
لکھو()
کے_لیے (متغیر ربط کا تمام_روابط) {
متغیر href = ربط["href"]
متغیر متن_ = ربط.صاف_متن
اگر (href اور متن_) {
لکھو(` ${متن_}`)
لکھو(` → ${href}`)
لکھو()
}
}
}
انتظار روابط_نکالیں("https://books.toscrape.com")
Example 3 — Extract table data — جدول ڈیٹا نکالنا
اردو: HTML جدول سے ڈیٹا نکالنے کے لیے پہلے
<th>ٹیگز سے کالم کے عنوانات، پھر CSS سلیکٹر"tbody tr"سے قطاریں اور<td>سے خانے نکالیں۔
درآمد { صفحہ_بناؤ } سے "اردو/کھرچنی"
متغیر html = """
<table id="نتائج">
<thead>
<tr><th>نام</th><th>عمر</th><th>شہر</th></tr>
</thead>
<tbody>
<tr><td>احمد</td><td>25</td><td>کراچی</td></tr>
<tr><td>فاطمہ</td><td>30</td><td>لاہور</td></tr>
<tr><td>علی</td><td>22</td><td>اسلام آباد</td></tr>
</tbody>
</table>
"""
متغیر صف = صفحہ_بناؤ(html)
متغیر جدول = صف.تلاش("table", { id: "نتائج" })
// ہیڈرز نکالیں
متغیر ہیڈرز = جدول.سب_تلاش("th")
لکھو("کالمز:", ہیڈرز.map(h => h.صاف_متن))
// ڈیٹا قطاریں
متغیر قطاریں = جدول.چنو("tbody tr")
لکھو(`\n${قطاریں.length} قطاریں ملیں:`)
کے_لیے (متغیر قطار کا قطاریں) {
متغیر خانے = قطار.سب_تلاش("td")
متغیر قدریں = خانے.map(td => td.صاف_متن)
لکھو(" ", قدریں.join(" | "))
}
Output:
کالمز: ["نام", "عمر", "شہر"]
3 قطاریں ملیں:
احمد | 25 | کراچی
فاطمہ | 30 | لاہور
علی | 22 | اسلام آباد
Example 4 — CSS selector usage — CSS سلیکٹر استعمال
اردو:
.چنو(css)سے CSS سلیکٹرز استعمال کریں جیسے.مضمون .عنوان(کلاس کے اندر کلاس) یاa.مزید(مخصوص کلاس کے روابط)۔.ایک_چنو()صرف پہلا عنصر دیتا ہے۔
درآمد { صفحہ_بناؤ } سے "اردو/کھرچنی"
متغیر html = """
<div class="مضمون">
<h2 class="عنوان">پہلا مضمون</h2>
<p class="خلاصہ">یہ پہلے مضمون کا خلاصہ ہے۔</p>
<a href="/مضامین/1" class="مزید">مزید پڑھیں</a>
</div>
<div class="مضمون">
<h2 class="عنوان">دوسرا مضمون</h2>
<p class="خلاصہ">دوسرے مضمون کا خلاصہ یہاں ہے۔</p>
<a href="/مضامین/2" class="مزید">مزید پڑھیں</a>
</div>
"""
متغیر صف = صفحہ_بناؤ(html)
// تمام مضامین کے عنوانات
متغیر عنوانات = صف.چنو(".مضمون .عنوان")
کے_لیے (متغیر عنوان کا عنوانات) {
لکھو("عنوان:", عنوان.صاف_متن)
}
// تمام "مزید پڑھیں" روابط
متغیر روابط = صف.چنو("a.مزید")
کے_لیے (متغیر ربط کا روابط) {
لکھو("URL:", ربط["href"])
}
// پہلا مضمون کا خلاصہ
متغیر پہلا_خلاصہ = صف.ایک_چنو(".مضمون .خلاصہ")
لکھو("پہلا خلاصہ:", پہلا_خلاصہ.صاف_متن)
Example 5 — Navigate parent, child, and siblings — والد، بچے اور ہم پہلو
اردو: عنصر کے درخت میں چلنے کے لیے:
.والدسے اوپر جائیں،.بچےسے نیچے،.اگلااور.پچھلاسے ہم پہلو (siblings) تک۔ یہ پیچیدہ HTML ڈھانچوں میں نیویگیٹ کرنے کا طریقہ ہے۔
درآمد { صفحہ_بناؤ } سے "اردو/کھرچنی"
متغیر html = """
<ul id="فہرست">
<li>پہلا</li>
<li class="منتخب">دوسرا</li>
<li>تیسرا</li>
<li>چوتھا</li>
</ul>
"""
متغیر صف = صفحہ_بناؤ(html)
// منتخب عنصر تلاش کریں
متغیر منتخب = صف.تلاش("li", { "class": "منتخب" })
لکھو("منتخب:", منتخب.صاف_متن)
// والد
متغیر والدین = منتخب.والد
لکھو("والد ٹیگ:", والدین.ٹیگ)
لکھو("والد ID:", والدین.شناخت)
// بہن بھائی
متغیر اگلا_عنصر = منتخب.اگلا
متغیر پچھلا_عنصر = منتخب.پچھلا
لکھو("اگلا:", اگلا_عنصر.صاف_متن)
لکھو("پچھلا:", پچھلا_عنصر.صاف_متن)
// تمام بچے
متغیر تمام_بچے = والدین.بچے
لکھو("بچوں کی تعداد:", تمام_بچے.length)
کے_لیے (متغیر بچہ کا تمام_بچے) {
لکھو(" -", بچہ.صاف_متن)
}
Example 6 — Scrape a real website (book listings) — حقیقی ویب سائٹ کھرچنا
اردو: یہ مثال
books.toscrape.comسے کتابوں کا ڈیٹا نکالتی ہے۔ CSS سلیکٹر"article.product_pod"سے تمام کتاب کارڈز ملتے ہیں، پھر ہر کارڈ سے عنوان، قیمت اور ستارہ درجہ بندی نکالی جاتی ہے۔
درآمد { کھرچو } سے "اردو/کھرچنی"
// ═══════════════════════════════════════════════════
// کتابوں کا ڈیٹا نکالنا — books.toscrape.com
// ═══════════════════════════════════════════════════
غیر_متزامن فنکشن کتابیں_نکالیں() {
متغیر صف = انتظار کھرچو("https://books.toscrape.com")
لکھو("عنوان:", صف.عنوان)
لکھو("=" * 60)
متغیر کتاب_کارڈز = صف.چنو("article.product_pod")
لکھو(`${کتاب_کارڈز.length} کتابیں ملیں:`)
لکھو()
متغیر کتابیں = []
کے_لیے (متغیر کارڈ کا کتاب_کارڈز) {
// عنوان
متغیر عنوان_عنصر = کارڈ.ایک_چنو("h3 a")
متغیر عنوان = عنوان_عنصر ? عنوان_عنصر["title"] : "نامعلوم"
// قیمت
متغیر قیمت_عنصر = کارڈ.ایک_چنو(".price_color")
متغیر قیمت = قیمت_عنصر ? قیمت_عنصر.صاف_متن : "نامعلوم"
// درجہ بندی (star rating class)
متغیر ستارہ_عنصر = کارڈ.ایک_چنو(".star-rating")
متغیر ستارے = ستارہ_عنصر ? ستارہ_عنصر["class"] : ""
کتابیں.شامل({ عنوان, قیمت, ستارے })
لکھو(` 📖 ${عنوان}`)
لکھو(` قیمت: ${قیمت} | ${ستارے}`)
لکھو()
}
واپس کتابیں
}
متغیر نتائج = انتظار کتابیں_نکالیں()
لکھو(`مجموعی کتابیں: ${نتائج.length}`)
Example 7 — Extract structured data and save to CSV — منظم ڈیٹا نکالنا اور CSV محفوظ کرنا
اردو: Hacker News سے خبریں نکالیں اور CSV فائل میں محفوظ کریں۔
.athingCSS سلیکٹر آئٹمز دیتا ہے، پھر ہر آئٹم سے عنوان اور URL نکال کر CSV مواد بنائیں اورفائل_لکھوسے فائل میں لکھیں۔
درآمد { کھرچو } سے "اردو/کھرچنی"
درآمد { فائل_لکھو } سے "اردو/فائلیں"
غیر_متزامن فنکشن خبریں_csv_میں_محفوظ_کریں() {
متغیر صف = انتظار کھرچو("https://news.ycombinator.com")
متغیر خبریں = []
متغیر آئٹمز = صف.چنو(".athing")
کے_لیے (متغیر آئٹم کا آئٹمز) {
متغیر عنوان_عنصر = آئٹم.ایک_چنو(".titleline a")
اگر (عنوان_عنصر) {
خبریں.شامل({
عنوان: عنوان_عنصر.صاف_متن,
url: عنوان_عنصر["href"]
})
}
}
// CSV میں محفوظ
متغیر csv_مواد = "عنوان,url\n"
کے_لیے (متغیر خبر کا خبریں) {
متغیر صاف_عنوان = خبر.عنوان.replace(/,/g, "")
csv_مواد += `${صاف_عنوان},${خبر.url}\n`
}
فائل_لکھو("hacker_news.csv", csv_مواد)
لکھو(`${خبریں.length} خبریں hacker_news.csv میں محفوظ ہو گئیں`)
}
انتظار خبریں_csv_میں_محفوظ_کریں()
Example 8 — Attributes deep dive — خصوصیات کا گہرا جائزہ
اردو: HTML عناصر کی خصوصیات
عنصر["خصوصیت_نام"]سے پڑھیں۔.خصوصیاتتمام خصوصیات کی ڈکشنری دیتا ہے۔.شناختسےidخصوصیت آسانی سے ملتی ہے۔
درآمد { صفحہ_بناؤ } سے "اردو/کھرچنی"
متغیر html = """
<img id="بینر" src="/images/banner.jpg" alt="بینر تصویر" width="800" height="200">
<a href="https://example.com" data-category="ٹیکنالوجی" target="_blank">مزید</a>
"""
متغیر صف = صفحہ_بناؤ(html)
// تصویر کی خصوصیات
متغیر تصویر = صف.تلاش("img")
لکھو("src:", تصویر["src"])
لکھو("alt:", تصویر["alt"])
لکھو("چوڑائی:", تصویر["width"])
لکھو("ID:", تصویر.شناخت)
لکھو("تمام خصوصیات:", تصویر.خصوصیات)
// ربط کی خصوصیات
متغیر ربط = صف.تلاش("a")
لکھو("\nhref:", ربط["href"])
لکھو("target:", ربط["target"])
لکھو("category:", ربط["data-category"])
Previous: HTTP → | Next: File Utilities →