2011-04-28 23 views
105

मैं निम्नलिखित सूप है:BeautifulSoup हो रही href

<a href="some_url">next</a> 
<span class="class">...</span> 
इस मैं href निकालना चाहते हैं से

, "some_url"

अगर मैं केवल एक टैग है मैं यह कर सकता है, लेकिन यहां दो टैग कर रहे हैं । मैं पाठ 'next' भी प्राप्त कर सकता हूं लेकिन यह वही नहीं है जो मैं चाहता हूं।

इसके अलावा, उदाहरण के साथ कहीं भी एपीआई का एक अच्छा विवरण है। मैं the standard documentation का उपयोग कर रहा हूं, लेकिन मैं कुछ और व्यवस्थित कुछ ढूंढ रहा हूं।

+0

एक कोड नमूना पोस्ट करें दिखाने के लिए कि कैसे आप यह करने के लिए – seb

+2

ठीक है कोशिश कर रहे हैं, मैं इसे समझ लिया: सूप.फिंड ('ए') ['href'] मुझे उलझन में यह बात यह थी कि मैं इसे देखने के लिए django (html) का उपयोग कर रहा था, जो वास्तव में इसे प्रस्तुत करने से पहले href को हटा देता है: सूप। ढूंढें ('ए') केवल 'एन' बन जाता है ext ' – dkgirl

उत्तर

157

आप हर a तत्व एक href विशेषता है कि खोजने के लिए निम्नलिखित तरीके से find_all उपयोग कर सकते हैं, और प्रिंट हर एक:

from BeautifulSoup import BeautifulSoup 

html = '''<a href="some_url">next</a> 
<span class="class"><a href="another_url">later</a></span>''' 

soup = BeautifulSoup(html) 

for a in soup.find_all('a', href=True): 
    print "Found the URL:", a['href'] 

उत्पादन होगा:

Found the URL: some_url 
Found the URL: another_url 

ध्यान दें कि यदि आप सुंदर सूप (संस्करण 4 से पहले) के पुराने संस्करण का उपयोग कर रहे हैं इस विधि का नाम findAll है। संस्करण 4 में, सुंदर सूप की विधि were changed to be PEP 8 compliant नाम देती है, इसलिए आपको इसके बजाय find_all का उपयोग करना चाहिए।


आप एक href साथ सभी टैग चाहते हैं, आप name पैरामीटर छोड़ सकते हैं:

href_tags = soup.find_all(href=True) 
+2

क्या आप कक्षा "वर्ग =" वर्ग " – yoshiserry

+2

@ योशिसरी सूप.फिंड (' ए ', {' क्लास ':' क्लास '}) के साथ एकल href प्राप्त कर सकते हैं [' href '] – rleelr

+0

आप कैसे क्षीण हो जाते हैं झूठी सकारात्मक और अवांछित परिणाम (यानी 'जावास्क्रिप्ट: शून्य (0) ','/en/support/index.html', '# smp-navigationList')? – user3155368