2011-05-25 13 views
6

मैं एक वेब पेज पढ़ने के लिए एक स्क्रिप्ट लिख रहा हूं, और एक निश्चित मानदंड से मेल खाने वाले लिंक का डेटाबेस बना रहा हूं। अभी मैं lxml और कैसे समझ एचटीएमएल से सभी <a href> के हड़पने के लिए साथ अटक कर रहा हूँ ...वेब पेज पर सभी लिंक खोजने के लिए पायथन एलएक्सएमएल/सुंदर सूप

result = self._openurl(self.mainurl) 
content = result.read() 
html = lxml.html.fromstring(content) 
print lxml.html.find_rel_links(html,'href') 
+1

इस दर्जनों बार कहा गया है और अच्छा जवाब है, जैसे है: http://stackoverflow.com/questions/1080411/retrieve-links- से-वेब-पेज-उपयोग-पायथन-और-सुंदर-सूप –

उत्तर

7

XPath का प्रयोग करें। (यहां से परीक्षण नहीं कर सकते) की तरह कुछ:

urls = html.xpath('//a/@href') 
+0

आपको बहुत बहुत धन्यवाद!

  • Economic & Name
  • मैं URL और वर्णन – Cmag

    +0

    ठीक परीक्षण करेंगे, तो कैसे मैं 2 चर वापस एक स्ट्रिंग से इस तरह के रूप प्राप्त कर सकते हैं) 'इसके बजाय और फिर (मेरे सिर के ऊपर से) '.attr [' href ']' url और' .text' के लिए सामग्री के लिए। – Cmag

    +0

    उपयोग की जरूरत है 'html.xpath ('// एक': मैं –

    3
    iterlinks साथ

    , lxml इस कार्य के लिए एक शानदार समारोह प्रदान करता है।

    हर कड़ी [...] एक कार्रवाई, संग्रह, पृष्ठभूमि, का हवाला देते हैं, ClassID, codebase, डेटा, href, longdesc, प्रोफाइल, src, usemap में के लिए यह पैदावार (तत्व, गुण, लिंक, स्थिति) , dynsrc, या lowsrc विशेषता।

    0

    मैं एक वैकल्पिक एलएक्सएमएल आधारित समाधान प्रदान करना चाहता हूं।

    समाधान lxml.cssselect में प्रदान की जाती फ़ंक्शन का उपयोग करता

    import urllib 
        import lxml.html 
        from lxml.cssselect import CSSSelector 
        connection = urllib.urlopen('http://www.yourTargetURL/') 
        dom = lxml.html.fromstring(connection.read()) 
        selAnchor = CSSSelector('a') 
        foundElements = selAnchor(dom) 
        print [e.get('href') for e in foundElements]