2011-10-11 15 views
10

खोजें हाय मैं यह नहीं समझ सकता कि मेरे जीवन के लिए कुछ पाठ के साथ शुरू होने वाले लिंक कैसे ढूंढें। findall ('a') ठीक काम करता है, लेकिन यह बहुत अधिक तरीका है। मैं बस http://www.nhl.com/ice/boxscore.htm?id=विशिष्ट लिंक w/beautifulsoup

से शुरू होने वाले सभी लिंक की एक सूची बनाना चाहता हूं क्या कोई मेरी मदद कर सकता है?

आपको बहुत बहुत

उत्तर

12

पहले एक परीक्षण दस्तावेज़ की स्थापना की और BeautifulSoup साथ पार्सर को खोलने धन्यवाद:

>>> from BeautifulSoup import BeautifulSoup 
>>> doc = '<html><body><div><a href="something">yep</a></div><div><a href="http://www.nhl.com/ice/boxscore.htm?id=3">somelink</a></div><a href="http://www.nhl.com/ice/boxscore.htm?id=7">another</a></body></html>' 
>>> soup = BeautifulSoup(doc) 
>>> print soup.prettify() 
<html> 
<body> 
    <div> 
    <a href="something"> 
    yep 
    </a> 
    </div> 
    <div> 
    <a href="http://www.nhl.com/ice/boxscore.htm?id=3"> 
    somelink 
    </a> 
    </div> 
    <a href="http://www.nhl.com/ice/boxscore.htm?id=7"> 
    another 
    </a> 
</body> 
</html> 

इसके बाद, हम एक href विशेषता http://www.nhl.com/ice/boxscore.htm?id= के साथ शुरू के साथ सभी <a> टैग के लिए खोज सकते हैं। आप इसके लिए रेगुलर एक्सप्रेशन का उपयोग कर सकते हैं:

>>> import re 
>>> soup.findAll('a', href=re.compile('^http://www.nhl.com/ice/boxscore.htm\?id=')) 
[<a href="http://www.nhl.com/ice/boxscore.htm?id=3">somelink</a>, <a href="http://www.nhl.com/ice/boxscore.htm?id=7">another</a>] 
+0

वाह धन्यवाद विशिष्ट है। मुझे लगता है कि सुंदर सूप दस्तावेज regex में प्रवाहशीलता presupposes। मुझे यह दिखाने के लिए धन्यवाद कि –

+1

@ जेनस्कॉट अगर यह आपके प्रश्न का उत्तर दिया गया है, तो आपको इसे स्वीकार करना चाहिए। – serk

+0

अच्छा लेकिन क्या होगा यदि आपके विशेषता नाम को "कक्षा" कहा जाता है? – Wajih

2

आप BeautifulSoup की आवश्यकता न पड़े क्योंकि अपनी खोज

>>> import re 
>>> links = re.findall("http:\/\/www\.nhl\.com\/ice\/boxscore\.htm\?id=.+", str(doc))