पायथन का अध्ययन करते समय, मैंने html दस्तावेज़ों से विशिष्ट टैग प्राप्त करने के लिए विभिन्न तरीकों को व्यवस्थित करने का प्रयास किया।
एचटीएमएल उदाहरण कोड
यह मानते हुए कि एक HTML दस्तावेज़ इस प्रकार है, आइए देखें कि सुंदर सूप मॉड्यूल का उपयोग करके एक-एक करके विशिष्ट टैग को कैसे पार्स किया जाए।
from bs4 import BeautifulSoup
html = """
<!DOCTYPE html>
<html>
<head></head>
<body>
<span class='test1'>Content1</span>
<div class='test1'>Content2</div>
<div class='test1' id='target' name='sangminem'>Goal</div>
<div class='test2'>Content3</div>
</body>
</html>
"""
soup = BeautifulSoup(html, "html.parser")
लक्ष्य नीचे दिया गया टैग है।
<div class='test1' id='target' name='sangminem'>Goal</div>
खोज () विधि का उपयोग करें
print(soup.find('div',id='target')) #tag, id
print(soup.find('div',attrs={'id':'target'})) #tag, id as attribute value
print(soup.find('div',attrs={'name':'sangminem'})) #tag, name as attribute value
print(soup.find(attrs={'name':'sangminem'})) #name as attribute value
print(soup.find(attrs={'id':'target'})) #id as attribute value
यहाँ आउटपुट है।
<div class="test1" id="target" name="sangminem">Goal</div>
<div class="test1" id="target" name="sangminem">Goal</div>
<div class="test1" id="target" name="sangminem">Goal</div>
<div class="test1" id="target" name="sangminem">Goal</div>
<div class="test1" id="target" name="sangminem">Goal</div>
Find_all () विधि का उपयोग करें
print(soup.find_all('div')[1]) #tag
print(soup.find_all('div',class_=['test1'])[1]) #tag, class
print(soup.find_all('div',id='target')[0]) #tag, id
print(soup.find_all('div',attrs={'class':'test1'})[1]) #tag, class as attribute value
print(soup.find_all('div',attrs={'id':'target'})[0]) #tag, id as attribute value
print(soup.find_all('div',attrs={'name':'sangminem'})[0]) #name as attribute value
print(soup.find_all(class_=['test1'])[2]) #class
print(soup.find_all(id='target')[0]) #id
print(soup.find_all(attrs={'class':'test1'})[2]) #class as attribute value
print(soup.find_all(attrs={'id':'target'})[0]) #id as attribute value
print(soup.find_all(attrs={'name':'sangminem'})[0]) #name as attribute value
यहाँ आउटपुट है।
<div class="test1" id="target" name="sangminem">Goal</div>
<div class="test1" id="target" name="sangminem">Goal</div>
<div class="test1" id="target" name="sangminem">Goal</div>
<div class="test1" id="target" name="sangminem">Goal</div>
<div class="test1" id="target" name="sangminem">Goal</div>
<div class="test1" id="target" name="sangminem">Goal</div>
<div class="test1" id="target" name="sangminem">Goal</div>
<div class="test1" id="target" name="sangminem">Goal</div>
<div class="test1" id="target" name="sangminem">Goal</div>
<div class="test1" id="target" name="sangminem">Goal</div>
<div class="test1" id="target" name="sangminem">Goal</div>
Select_one () विधि का उपयोग करें
print(soup.select_one('div.test1#target')) #tag, class, id
print(soup.select_one('div#target')) #tag, id
print(soup.select_one('.test1#target')) #class, id
print(soup.select_one('#target')) #id
यहाँ आउटपुट है।
<div class="test1" id="target" name="sangminem">Goal</div>
<div class="test1" id="target" name="sangminem">Goal</div>
<div class="test1" id="target" name="sangminem">Goal</div>
<div class="test1" id="target" name="sangminem">Goal</div>
चयन () विधि का प्रयोग करें
print(soup.select('.test1')[2]) #class
print(soup.select('div.test1')[1]) #tag, class
print(soup.select('div.test1#target')[0]) #tag, class, id
print(soup.select('div#target')[0]) #tag, id
print(soup.select('.test1#target')[0]) #class, id
print(soup.select('#target')[0]) #id
यहाँ आउटपुट है।
<div class="test1" id="target" name="sangminem">Goal</div>
<div class="test1" id="target" name="sangminem">Goal</div>
<div class="test1" id="target" name="sangminem">Goal</div>
<div class="test1" id="target" name="sangminem">Goal</div>
<div class="test1" id="target" name="sangminem">Goal</div>
<div class="test1" id="target" name="sangminem">Goal</div>
खोज () विधि और select_one () विधि एक ही परिणाम प्राप्त करती है।
यदि कई परिणाम हैं जो शर्त को पूरा करते हैं, तो केवल पहला मान पुनर्प्राप्त किया जाता है।
Find_all () और चयन () विधियाँ वे सभी परिणाम प्राप्त करती हैं जो एक सरणी के रूप में शर्त को पूरा करते हैं।
इसलिए, अंत में वांछित मान प्राप्त करने के लिए, आपको सरणी अनुक्रमणिका को नहीं छोड़ना चाहिए।
यदि यह तय करना मुश्किल है कि किसका उपयोग करना है क्योंकि विभिन्न विधियाँ हैं, तो हम चयन () विधि का उपयोग करने की सलाह देते हैं।
इसका उपयोग करना आसान है और वास्तव में तेजी से पार्स करता है।