python - कुछ स्ट्रिंग्स को स्क्रैप करने के लिए बीएस 4 से सभी विधि का उपयोग कैसे करें



python-3.x web-scraping (1)

<li class="sre" data-tn-component="asdf-search-result" id="85e08291696a3726" itemscope="" itemtype="http://schema.org/puppies">
  <div class="sre-entry">
    <div class="sre-side-bar">
    </div>
    <div class="sre-content">
      <div class="clickable_asdf_card" onclick="window.open('/r/85e08291696a3726?sp=0', '_blank')" style="cursor: pointer;" target="_blank">

मुझे स्ट्रिंग '/ r / 85e08291696a3726? Sp = 0' प्राप्त करने की आवश्यकता है, जो पूरे पृष्ठ पर होता है मुझे यकीन नहीं है कि यह करने के लिए soup.find_all विधि का उपयोग कैसे करें। स्ट्रिंग जो मुझे हमेशा की आवश्यकता होती है '

यह वही है जो मैं सोच रहा था (नीचे), लेकिन जाहिर है मैं मापदंडों को गलत कर रहा हूं। मैं पृष्ठ भर में '/ r / 85e08291696a3726? Sp = 0' स्ट्रिंग वापस करने के लिए find_all विधि को कैसे प्रारूपित करूँ?

for divsec in soup.find_all('div', class_='clickable_asdf_card'):
    print('got links')
    x=x+1

मैं बीएस 4 के लिए प्रलेखन पढ़ता हूं और मुझे स्ट्रिंग की सभी घटनाओं को खोजने के लिए find_all ('clickable_asdf_card') का उपयोग करने के बारे में सोच रहा था लेकिन फिर क्या? क्या मुझे मापदंडों को समायोजित करने के लिए एक स्ट्रिंग की आवश्यकता है?


BeautifulSoup का अंतर्निर्मित नियमित अभिव्यक्ति का प्रयोग करें एक onclick विशेषता मान से वांछित सबस्ट्रिंग को खोजने और निकालने के लिए खोजें:

import re

pattern = re.compile(r"window\.open\('(.*?)', '_blank'\)")
for item in soup.find_all(onclick=pattern):
    print(pattern.search(item["onclick"]).group(1))

यदि केवल एक ही तत्व है जिसे आप ढूंढना चाहते हैं, तो find_all() की बजाय find_all() का उपयोग करें





bs4