खोज…


टिप्पणियों

इस खंड में, हम चर्चा करते हैं कि सुंदर सूप क्या है, इसका क्या उपयोग किया जाता है और इसका उपयोग करने के बारे में जाने के बारे में एक संक्षिप्त रूपरेखा।

सुंदर सूप एक पायथन लाइब्रेरी है जो आपके पूर्व-स्थापित html / xml पार्सर का उपयोग करता है और वेब पेज / html / xml को टैग, तत्वों, विशेषताओं और मूल्यों से युक्त पेड़ में परिवर्तित करता है। अधिक सटीक होने के लिए, पेड़ में चार प्रकार की वस्तुएं होती हैं, टैग, नेविगेबल स्ट्रींग, ब्यूटीफुल और टिप्पणी। इस पेड़ को तब ब्यूटीफुल ऑब्जेक्ट के तरीकों / गुणों का उपयोग करके "क्वियर" किया जा सकता है जो पार्सर लाइब्रेरी से बनाया गया है।

आपकी आवश्यकता: अक्सर, आपके पास निम्न में से एक आवश्यकता हो सकती है:

  1. आप यह निर्धारित करने के लिए एक वेब पेज पार्स करना चाह सकते हैं कि कितने टैग पाए जाते हैं, प्रत्येक टैग के कितने तत्व पाए जाते हैं और उनके मूल्य। आप उन्हें बदलना चाह सकते हैं।

  2. आप तत्व नामों और मूल्यों को निर्धारित करना चाह सकते हैं, ताकि आप उन्हें वेब पेज स्वचालन के लिए अन्य पुस्तकालयों के साथ संयोजन के रूप में उपयोग कर सकें, जैसे कि सेलियम

  3. आप किसी वेब पेज में दिखाए गए डेटा को अन्य प्रारूपों, जैसे कि CSV फ़ाइल या किसी SQLite या mysql जैसे संबंधपरक डेटाबेस में स्थानांतरित करना / निकालना चाह सकते हैं। इस मामले में, लाइब्रेरी आपको वेब पेज की संरचना को समझने के पहले चरण के साथ मदद करती है, हालांकि आप हस्तांतरण का कार्य करने के लिए अन्य पुस्तकालयों का उपयोग करेंगे।

  4. आप यह जानना चाह सकते हैं कि कितने तत्व एक निश्चित सीएसएस शैली के साथ स्टाइल किए गए हैं और कौन से हैं।

अपने पायथन कोड में विशिष्ट बुनियादी उपयोग के लिए अनुक्रम :

  1. सुंदर सूप पुस्तकालय आयात करें

  2. ब्यूटीफुल लाइब्रेरी के साथ एक वेब पेज या एचटीएमएल-टेक्स्ट खोलें, जिसमें बताया गया है कि किस पार्सर का उपयोग किया जाए। इस चरण का परिणाम एक सुंदर वस्तु है। (नोट:। यह पार्सर नाम उल्लेख किया है, पहले से ही अपने अजगर pacakges के हिस्से के रूप स्थापित किया जाना चाहिए उदाहरण के लिए, html.parser ।, एक में बनाया गया है, पैकेज अजगर के साथ भेज दिया '-बैटरी के साथ' आप इस तरह के रूप में अन्य पारसर्स स्थापित कर सकता है lxml या html5lib )

  3. "क्वेरी" या सिंटैक्स 'object.method' ऑब्जेक्ट 'object.method' का उपयोग करके ब्यूटीफुल ऑब्जेक्ट खोजें और एक संग्रह में परिणाम प्राप्त करें, जैसे कि पायथन डिक्शनरी। कुछ तरीकों के लिए, आउटपुट एक साधारण मूल्य होगा।

  4. पिछले कदम से परिणाम का उपयोग करें जो आप इसके साथ करना चाहते हैं, अपने पायथन कोड के बाकी हिस्सों में। आप ट्री ऑब्जेक्ट में तत्व मान या विशेषता मान भी संशोधित कर सकते हैं। संशोधन HTML कोड के स्रोत को प्रभावित नहीं करते हैं, लेकिन आप prettify ऑब्जेक्ट से नया आउटपुट बनाने के लिए आउटपुट स्वरूपण विधियों (जैसे कि prettify ) को कॉल कर सकते हैं।

आमतौर पर इस्तेमाल किया तरीकों: आमतौर पर, .find और .find_all तरीकों पेड़ खोज करने के लिए उपयोग किया जाता है, इनपुट तर्क दे रही है।

इनपुट तर्क हैं: टैग नाम जो मांगा जा रहा है, विशेषता नाम और अन्य संबंधित तर्क। इन तर्कों के रूप में प्रस्तुत किया जा सकता है: एक स्ट्रिंग, एक नियमित अभिव्यक्ति, एक सूची या एक फ़ंक्शन।

ब्यूटीफुल वस्तु के सामान्य उपयोगों में शामिल हैं:

  1. सीएसएस वर्ग द्वारा खोजें
  2. हाइपरलिंक पते द्वारा खोजें
  3. तत्व आईडी द्वारा खोजें, टैग
  4. विशेषता नाम से खोजें। मान बताइए।

यदि आपको उपरोक्त मानदंडों के संयोजन के साथ पेड़ को फ़िल्टर करने की आवश्यकता है, तो आप एक फ़ंक्शन भी लिख सकते हैं जो सही या गलत का मूल्यांकन करता है, और उस फ़ंक्शन द्वारा खोज करता है।

संस्करण

संस्करण टिप्पणियों पैकेज का नाम रिलीज़ की तारीख
3.x संस्करण 3.2.1; अजगर 2 ही BeautifulSoup 2012-02-16
4.x संस्करण 4.5.0; अजगर 2 और 3 beautifulsoup4 2016/07/20

स्थापना या सेटअप

सुंदर को स्थापित करने के लिए पाइप का उपयोग किया जा सकता है। BeautifulSoup के संस्करण 4 को स्थापित करने के लिए, कमांड चलाएँ:

pip install beautifulsoup4

विदित हो कि पैकेज का नाम beautifulsoup4 बजाय beautifulsoup , बाद वाला नाम पुरानी रिलीज के लिए खड़ा है, देखें पुराना whatspp

एक सुंदरसुपर "हैलो वर्ल्ड" स्क्रैपिंग उदाहरण

from bs4 import BeautifulSoup
import requests

main_url = "https://fr.wikipedia.org/wiki/Hello_world"
req = requests.get(main_url)
soup = BeautifulSoup(req.text, "html.parser")

# Finding the main title tag.
title = soup.find("h1", class_ = "firstHeading")
print title.get_text()

# Finding the mid-titles tags and storing them in a list.
mid_titles = [tag.get_text() for tag in soup.find_all("span", class_ = "mw-headline")]

# Now using css selectors to retrieve the article shortcut links
links_tags = soup.select("li.toclevel-1")
for tag in links_tags:
    print tag.a.get("href")

# Retrieving the side page links by "blocks" and storing them in a dictionary
side_page_blocks = soup.find("div",
                            id = "mw-panel").find_all("div",
                                                      class_ = "portal")
blocks_links = {}
for num, block in enumerate(side_page_blocks):
    blocks_links[num] = [link.get("href") for link in block.find_all("a", href = True)]

print blocks_links[0]

आउटपुट:

"Hello, World!" program
#Purpose
#History
#Variations
#See_also
#References
#External_links
[u'/wiki/Main_Page', u'/wiki/Portal:Contents', u'/wiki/Portal:Featured_content', u'/wiki/Portal:Current_events', u'/wiki/Special:Random', u'https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en', u'//shop.wikimedia.org']

जब सुंदर सूप को स्थापित करना अपने पसंदीदा पार्सर में प्रवेश करता है तो सामान्य Warning परहेज करता है कि no parser was explicitely specified

वेबपेज ट्री के भीतर एक तत्व खोजने के लिए विभिन्न तरीकों का उपयोग किया जा सकता है।

हालांकि कुछ अन्य तरीके मौजूद हैं, लेकिन CSS classes और CSS selectors पेड़ में तत्वों को खोजने के दो आसान तरीके हैं।

यह ध्यान दिया जाना चाहिए कि हम उन्हें खोजते समय True पर उनके विशेषता मान सेट करके टैग ढूंढ सकते हैं।

get_text() हमें एक टैग में निहित पाठ को पुनः प्राप्त करने की अनुमति देता है। यह इसे सिंगल यूनिकोड स्ट्रिंग के रूप में लौटाता है। tag.get("attribute") एक टैग की विशेषता मान प्राप्त करने की अनुमति देता है।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow