Web Scraping Example — ویب کھرچنی
This example demonstrates using the اردو/کھرچنی library to fetch and parse web pages.
اردو: یہ مثال
اردو/کھرچنیلائبریری استعمال کر کے ویب صفحات حاصل کرنے اور ان کا تجزیہ کرنے کا طریقہ ظاہر کرتی ہے۔
Import — درآمد
1. Parse a Local HTML String — مقامی HTML سٹرنگ کا تجزیہ
اردو: اس مثال میں ایک مقامی HTML سٹرنگ کو پارس کیا گیا ہے۔
صفحہ_بناؤفنکشن HTML کو قابل تلاش ڈھانچے میں تبدیل کرتا ہے، جس کے بعد عناصر تلاش کیے جا سکتے ہیں۔
متغیر html = `
<html>
<head><title>اردو ویب سائٹ</title></head>
<body>
<h1 id="عنوان">خوش آمدید</h1>
<p class="تعارف">یہ ایک مثال ہے۔</p>
<ul>
<li>پہلا آئٹم</li>
<li>دوسرا آئٹم</li>
<li>تیسرا آئٹم</li>
</ul>
<a href="https://example.com">لنک</a>
</body>
</html>
`;
متغیر سوپ = صفحہ_بناؤ(html);
لکھو("عنوان:", سوپ.عنوان);
متغیر سرخی = سوپ.تلاش("h1");
لکھو("h1 متن:", سرخی.صاف_متن);
متغیر فقرہ = سوپ.تلاش("p");
لکھو("p متن:", فقرہ.صاف_متن);
لکھو("p کلاس:", فقرہ["class"]);
آؤٹ پٹ:
2. Extract All Links from a Page — صفحے سے تمام لنک نکالنا
اردو: یہ غیر متزامن فنکشن کسی بھی URL سے تمام لنک نکالتا ہے۔
کھرچوفنکشن ویب صفحہ حاصل کرتا ہے اورسب_تلاش("a")تمام لنک عناصر واپس کرتا ہے۔ غلطی ہونے پر پیغام پرنٹ کیا جاتا ہے۔
غیر_متزامن فنکشن تمام_لنک_نکالو(url) {
کوشش {
متغیر سوپ = انتظار کھرچو(url);
متغیر لنکس = سوپ.سب_تلاش("a");
لکھو(`\nکل لنک: ${لمبائی(لنکس)}`);
لکھو("─".دہراؤ(40));
کے_لیے (متغیر لنک کا لنکس) {
متغیر href = لنک["href"];
متغیر متن = لنک.صاف_متن;
اگر (href && متن) {
لکھو(` ${متن} → ${href}`);
}
}
} پکڑو (غ) {
لکھو(`غلطی: ${غ}`);
}
}
انتظار تمام_لنک_نکالو("https://example.com");
3. Extract Table Data — جدول کا ڈیٹا نکالنا
اردو: یہ مثال HTML جدول سے ڈیٹا نکالنے کا طریقہ دکھاتی ہے۔
سب_تلاش("tr")تمام قطاریں حاصل کرتا ہے، پھر ہر قطار میںtd(ڈیٹا خانے) یاth(سرخی خانے) تلاش کیے جاتے ہیں۔
متغیر html = `
<table>
<tr><th>نام</th><th>عمر</th><th>شہر</th></tr>
<tr><td>احمد</td><td>25</td><td>کراچی</td></tr>
<tr><td>فاطمہ</td><td>22</td><td>لاہور</td></tr>
<tr><td>علی</td><td>30</td><td>اسلام آباد</td></tr>
</table>
`;
متغیر سوپ = صفحہ_بناؤ(html);
متغیر قطاریں = سوپ.سب_تلاش("tr");
لکھو("جدول کا ڈیٹا:");
لکھو("─".دہراؤ(40));
کے_لیے (متغیر قطار کا قطاریں) {
متغیر خانے = قطار.سب_تلاش("td");
اگر (لمبائی(خانے) == 0) {
// سرخی قطار
متغیر سرخیاں = قطار.سب_تلاش("th");
لکھو(سرخیاں.map(فنکشن(س) { واپس س.صاف_متن }).join(" | "));
} ورنہ {
لکھو(خانے.map(فنکشن(خ) { واپس خ.صاف_متن }).join(" | "));
}
}
آؤٹ پٹ:
جدول کا ڈیٹا:
────────────────────────────────────────
نام | عمر | شہر
احمد | 25 | کراچی
فاطمہ | 22 | لاہور
علی | 30 | اسلام آباد
4. CSS Selectors — CSS سلیکٹر
اردو: CSS سلیکٹر HTML عناصر تلاش کرنے کا ایک طاقتور طریقہ ہے۔
.چنو()متعدد عناصر واپس کرتا ہے جبکہ.ایک_چنو()صرف پہلا عنصر واپس کرتا ہے۔ کلاس کے لیے.اور ID کے لیے#استعمال کریں۔
متغیر html = `
<div class="مضمون">
<h2 class="عنوان">پہلا مضمون</h2>
<p class="متن">پہلا متن یہاں ہے۔</p>
</div>
<div class="مضمون">
<h2 class="عنوان">دوسرا مضمون</h2>
<p class="متن">دوسرا متن یہاں ہے۔</p>
</div>
<div id="خاص">
<span>خاص عنصر</span>
</div>
`;
متغیر سوپ = صفحہ_بناؤ(html);
// کلاس سے تلاش
متغیر مضامین = سوپ.چنو(".مضمون");
لکھو(`مضامین: ${لمبائی(مضامین)}`);
// ID سے تلاش
متغیر خاص = سوپ.ایک_چنو("#خاص");
لکھو(`خاص: ${خاص.صاف_متن}`);
// نیسٹڈ سلیکٹر
متغیر عناوین = سوپ.چنو(".مضمون .عنوان");
کے_لیے (متغیر ع کا عناوین) {
لکھو(`عنوان: ${ع.صاف_متن}`);
}
// پہلا عنصر
متغیر پہلا = سوپ.ایک_چنو(".متن");
لکھو(`پہلا متن: ${پہلا.صاف_متن}`);
5. Navigate the DOM Tree — DOM درخت میں گشت
اردو: DOM درخت میں گشت سے ایک عنصر سے دوسرے تک جانا ممکن ہوتا ہے۔
.اگلااگلا ہم مرتبہ عنصر دیتا ہے،.والدوالدین عنصر دیتا ہے، اور.بچےتمام بچے عناصر کی فہرست دیتا ہے۔
متغیر html = `
<div id="مرکز">
<p id="پہلا">پہلا فقرہ</p>
<p id="دوسرا">دوسرا فقرہ</p>
<p id="تیسرا">تیسرا فقرہ</p>
</div>
`;
متغیر سوپ = صفحہ_بناؤ(html);
متغیر پہلا = سوپ.تلاش("p");
لکھو("پہلا:", پہلا.صاف_متن);
لکھو("اگلا:", پہلا.اگلا != خالی ? پہلا.اگلا.صاف_متن : "نہیں");
لکھو("والد ID:", پہلا.والد["id"]);
// تمام بچے
متغیر والد = سوپ.تلاش("div");
متغیر بچے = والد.بچے;
لکھو(`\nبچوں کی تعداد: ${لمبائی(بچے)}`);
کے_لیے (متغیر بچہ کا بچے) {
لکھو(` - ${بچہ.صاف_متن} (ID: ${بچہ["id"]})`);
}
6. Scrape Real Website — Book Titles — حقیقی ویب سائٹ کھرچنا: کتابوں کے عنوانات
اردو: یہ مثال ایک حقیقی ویب سائٹ سے کتابوں کے نام، قیمتیں، اور درجہ بندی نکالتی ہے۔
کھرچوفنکشن انٹرنیٹ سے صفحہ لوڈ کرتا ہے اور CSS سلیکٹر سے ڈیٹا نکالا جاتا ہے۔
غیر_متزامن فنکشن کتابیں_حاصل_کرو() {
لکھو("کتابیں لوڈ ہو رہی ہیں...");
کوشش {
متغیر سوپ = انتظار کھرچو("https://books.toscrape.com");
لکھو(`\nصفحہ عنوان: ${سوپ.عنوان}`);
لکھو("─".دہراؤ(50));
متغیر کتابیں = سوپ.چنو("article.product_pod");
لکھو(`کل کتابیں: ${لمبائی(کتابیں)}\n`);
متغیر شمار = 0;
کے_لیے (متغیر کتاب کا کتابیں) {
متغیر نام = کتاب.ایک_چنو("h3 a");
متغیر قیمت = کتاب.ایک_چنو(".price_color");
متغیر درجہ = کتاب.ایک_چنو(".star-rating");
اگر (نام && قیمت) {
شمار = شمار + 1;
لکھو(`${شمار}. ${نام["title"]}`);
لکھو(` قیمت: ${قیمت.صاف_متن}`);
اگر (درجہ) {
لکھو(` درجہ: ${درجہ["class"]}`);
}
لکھو("");
}
}
} پکڑو (غ) {
لکھو(`غلطی: ${غ}`);
}
}
انتظار کتابیں_حاصل_کرو();
7. Scrape and Save to CSV (with Pandas) — کھرچ کر CSV میں محفوظ کرنا
اردو: یہ مثال ویب سائٹ سے ڈیٹا کھرچ کر اسے Pandas کے ذریعے CSV فائل میں محفوظ کرتی ہے۔ پہلے ڈیٹا ایک لغت میں جمع کیا جاتا ہے، پھر
pd.جدول()سے ڈیٹا فریم بنا کر CSV میں لکھا جاتا ہے۔
درآمد { پانڈاز } سے "اردو/ذہین";
غیر_متزامن فنکشن کھرچو_اور_محفوظ_کرو() {
کوشش {
متغیر سوپ = انتظار کھرچو("https://books.toscrape.com");
متغیر کتابیں = سوپ.چنو("article.product_pod");
متغیر ڈیٹا = { "نام": [], "قیمت": [] };
کے_لیے (متغیر کتاب کا کتابیں) {
متغیر نام = کتاب.ایک_چنو("h3 a");
متغیر قیمت = کتاب.ایک_چنو(".price_color");
اگر (نام && قیمت) {
ڈیٹا["نام"].شامل(نام["title"]);
ڈیٹا["قیمت"].شامل(قیمت.صاف_متن);
}
}
متغیر pd = نیا پانڈاز();
متغیر df = pd.جدول(ڈیٹا);
pd.csv_لکھو(df, "کتابیں.csv");
لکھو(`${لمبائی(ڈیٹا["نام"])} کتابیں کتابیں.csv میں محفوظ ہو گئیں`);
} پکڑو (غ) {
لکھو(`غلطی: ${غ}`);
}
}
انتظار کھرچو_اور_محفوظ_کرو();
Tips — مفید مشورے
اردو: ویب کھرچنی کے لیے درج ذیل مشورے مدد گار ہیں۔
Parser Choice: -
"html.parser"— built-in, no extra install needed -"lxml"— faster for large pages (pip install lxml) -"html5lib"— most lenient, handles broken HTML bestPolite Scraping: Add a delay between requests with
تاخیر(1000)(1 second) to avoid overloading servers.Headers: Some sites require a User-Agent header: