BeautifulSoup से HTML पार्स करना
पार्स ट्री में नेविगेट करें और सिलेक्टर से डेटा निकालें।
BeautifulSoup से HTML पार्स करना, CoddyKit पर Python Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Python Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Python Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
BeautifulSoup इंस्टॉल करना
beautifulsoup4 HTML और XML को पार्स करता है। गति के लिए lxml पार्सर या बिना किसी अतिरिक्त निर्भरता के उपयोग के लिए html.parser का उपयोग करें।
# pip install beautifulsoup4 lxml
from bs4 import BeautifulSoup
html = "<h1>Hello</h1><p class='intro'>World</p>"
soup = BeautifulSoup(html, "lxml")
print(soup.h1.text) # Helloतत्व ढूँढना
find(tag) पहला मेल खाता तत्व लौटाता है। find_all(tag) सभी मेल खाते तत्वों की सूची लौटाता है।
from bs4 import BeautifulSoup
html = "<ul><li>A</li><li>B</li><li>C</li></ul>"
soup = BeautifulSoup(html, "lxml")
print(soup.find("li").text) # A
print([li.text for li in soup.find_all("li")]) # [A,B,C]CSS चयनकर्ता
soup.select("css selector") CSS सिंटैक्स का उपयोग करता है। soup.select_one() पहला मेल लौटाता है।
from bs4 import BeautifulSoup
html = '<div class="card"><a href="/p/1">Link 1</a></div>'
soup = BeautifulSoup(html, "lxml")
print(soup.select("div.card a")[0]["href"]) # /p/1
print(soup.select_one("a")["href"]) # /p/1विशेषताओं तक पहुँचना
टैग की विशेषताओं को डिक्शनरी की तरह एक्सेस करें: tag["href"], tag.get("class", [])।
from bs4 import BeautifulSoup
html = '<a href="https://example.com" class="link external">Click</a>'
soup = BeautifulSoup(html, "lxml")
a = soup.find("a")
print(a["href"]) # https://example.com
print(a.get("class", [])) # ['link', 'external']पार्स ट्री में नेविगेट करना
ट्री में आगे बढ़ने के लिए .parent, .children, .next_sibling, .previous_sibling का उपयोग करें।
from bs4 import BeautifulSoup
html = "<div><h2>Title</h2><p>Para</p></div>"
soup = BeautifulSoup(html, "lxml")
h2 = soup.find("h2")
print(h2.parent.name) # div
print(h2.next_sibling.text) # Para (next sibling)टेक्स्ट निकालना
tag.get_text(separator=" ", strip=True) टैग के भीतर का पूरा टेक्स्ट लौटाता है और अनावश्यक खाली स्थान साफ करता है।
from bs4 import BeautifulSoup
html = "<div> <p>Hello</p> <p> World </p> </div>"
soup = BeautifulSoup(html, "lxml")
print(soup.div.get_text(separator=" ", strip=True))
# Hello Worldrequests और BeautifulSoup से स्क्रैपिंग
requests से पेज प्राप्त करें और BeautifulSoup से उसे पार्स करें — यह क्लासिक स्क्रैपिंग जोड़ी है।
import requests
from bs4 import BeautifulSoup
url = "https://books.toscrape.com"
r = requests.get(url, timeout=10)
soup = BeautifulSoup(r.text, "lxml")
titles = [h3.find("a")["title"] for h3 in soup.select("article.product_pod h3")]
print(titles[:3])सापेक्ष URL संभालना
सापेक्ष लिंक को पूर्ण URL में बदलने के लिए urllib.parse.urljoin(base, href) का उपयोग करें।
from urllib.parse import urljoin
base = "https://example.com/products/"
href = "../about"
print(urljoin(base, href)) # https://example.com/aboutएन्कोडिंग संभालना
BeautifulSoup एन्कोडिंग का स्वतः पता लगा लेता है, लेकिन आप इसे निर्दिष्ट कर सकते हैं या requests से प्राप्त r.encoding का उपयोग कर सकते हैं।
import requests
from bs4 import BeautifulSoup
r = requests.get("https://example.com")
print(r.encoding) # e.g. utf-8
soup = BeautifulSoup(r.content, "lxml", from_encoding=r.encoding)संशोधन और सीरियलाइज़ेशन
पार्स ट्री में बदलाव करें और str(tag) या soup.prettify() से उसे वापस HTML में बदलें।
from bs4 import BeautifulSoup
html = "<p>Hello <b>world</b></p>"
soup = BeautifulSoup(html, "lxml")
soup.b.decompose() # remove the <b> tag
print(str(soup.p)) # <p>Hello </p>BeautifulSoup की सीमाएँ
BS4 स्थिर HTML को पार्स करता है। यह JavaScript चला नहीं सकता। JS से रेंडर किए गए पेजों के लिए Playwright या Selenium का उपयोग करें।
# BeautifulSoup: good for static HTML
# Playwright: for JavaScript-rendered SPAs
# Scrapy: for large-scale crawls with pipelines
# pip install playwright
# playwright install
# from playwright.async_api import async_playwrightत्वरित जाँच
BeautifulSoup में CSS चयनकर्ता से मेल खाने वाले सभी तत्व कौन-सी विधि लौटाती है?
पुनरावलोकन
BeautifulSoup HTML को नेविगेट किए जा सकने वाले ट्री में पार्स करता है। टैग खोजने के लिए find()/find_all(), CSS चयनकर्ताओं के लिए select() और साफ टेक्स्ट के लिए get_text() का उपयोग करें। स्थिर पेजों के लिए इसे requests के साथ इस्तेमाल करें; JS से रेंडर की गई सामग्री के लिए Playwright का उपयोग करें।
एआई शिक्षक के साथ Python सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 76
- पाठ
- 320
अक्सर पूछे जाने वाले प्रश्न
क्या “BeautifulSoup से HTML पार्स करना” पाठ निःशुल्क है?
हाँ—“BeautifulSoup से HTML पार्स करना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Python Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Python Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“BeautifulSoup से HTML पार्स करना” में मैं क्या सीखूँगा?
पार्स ट्री में नेविगेट करें और सिलेक्टर से डेटा निकालें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Python Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Python Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Python Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“BeautifulSoup से HTML पार्स करना” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Python Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Python Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- requests और httpx से HTTP रिक्वेस्ट
- BeautifulSoup से HTML पार्स करना
- Scrapy स्पाइडर बनाना
- JavaScript और एंटी-स्क्रैपिंग उपाय संभालना