मेरे पास एक वेबसाइट है और उनका लेआउट मूल रूप से यह है:
<h2>
First Heading
</h2>
<h2>
<span class="class" id="id1">Second Heading</span>
</h2>
<ul>
<li>One</li><li>Two</li><li>Three</li><li>Four</li><li>Five</li>
</ul>
<h2>
<span class="class" id="id2">Third Heading</span>
</h2>
<ul>
<li>Red</li><li>Orange</li><li>Yellow</li><li>Green</li><li>Blue</li>
</ul>
<h2>
<span class="class" id="id3">Last Heading</span>
</h2>
<ul>
<li>VVV</li><li>WWW</li><li>XXX</li><li>YYY</li><li>ZZZ</li>
</ul>
मैं दूसरे शीर्षक और तीसरे शीर्षक के बीच से सूची आइटम कैसे प्राप्त करूं?
मैंने इसके साथ कुछ इस तरह से विचार करके शुरुआत की:
h2s = soup.find_all("h2")
for h2 in h2s:
print(h2.span)
और फिर मैं कुछ इस तरह आगे बढ़ा:
startSpan = soup.find("span", id="id1")
stopSpan = soup.find("span", id="id2")
और इसके माध्यम से पुनरावृति के बारे में सोचा, लेकिन यह सब एक साथ रखने के लिए संघर्ष कर रहा हूं।
आखिरकार मैं जो हासिल करने की कोशिश कर रहा हूं वह है:
["One", "Two", "Three"...]
पृष्ठ के नीचे अन्य सूचियों को शामिल किए बिना।
1 उत्तर
- <h2> टैग खोजें >
:nth-of-type(n)
CSS चयनकर्ता। - <ul> टैग खोजें "nofollow noreferrer">
.find_next()
विधि।
soup = BeautifulSoup(html, "html.parser")
print(
soup.select_one("h2:nth-of-type(2)")
.find_next("ul")
.get_text(strip=True, separator="|")
.split("|")
)
आउटपुट:
['One', 'Two', 'Three', 'Four', 'Five']
"ईवेंट" के अंतर्गत सभी <li>
टैग चुनने के लिए संपादित करें:
for tag in soup.select(".mw-parser-output > ul:nth-of-type(1) li"):
print(tag.text)
import requests from bs4 import BeautifulSoup URL = 'https://en.wikipedia.org/wiki/December_31' html = requests.get(URL) soup = BeautifulSoup(html.text, "html.parser") print(soup.select_one("h2:nth-of-type(1)")) # Returns "Contents", the 1st header print(soup.select_one("h2:nth-of-type(2)")) # Returns "Births", the 3rd header # One of those should return "Events" which is the one I care about
right-click -> Inspect -> Click on the element you want -> Right-click -> Copy -> Copy Selector
Events
के अंतर्गत सभी तत्वों का चयन करने के लिए अपना उत्तर संपादित कर लिया है।
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।
soup.find('ul')
इस स्थिति में अपेक्षानुसार काम नहीं करेगा? अगर इससे पहले कुछ भी नहीं है, तो वह केवल पहले पाए गएul
को खींच लेगाul
है जो मुझसे छूट गया है। तो यह वास्तव में दूसराul
है जिसे मुझे प्राप्त करने की आवश्यकता है।