python
  • beautifulsoup
  • 2016-04-16 16 views 2 likes 
    2

    Wir verschrotteten Amazon.in Website, um den Preis eines Produkts abzurufen. Alle Produkte haben unterschiedliche Werte für "ID" -Attribute im "span" -Tag wie z.Python - Schöne Suppe ODER Zustand in supp.find_all (....)

    id = 'priceblock_ourprice', id = 'priceblock_saleprice', and id = 'priceblock_dealprice'. 
    

    Unsere Aufgabe ist es, den Preis der Produkte mit dem find_all (..) Methode in Schöner Suppe zu holen. Von unserem Grundwissen konnten wir nur einen Parameter an die find_all (..) Methode geben, wie unten dargestellt:

    m = soup1.find_all('span', {'id': 'priceblock_ourprice'}) 
    

    Gibt es eine Möglichkeit, mehrere Parameter an der find_all (..) Methode unter Verwendung von OR-Bedingung zu geben ?

    die Links mit unterschiedlichen Werten von gleichem 'id' Attribute:

    Link 1

    Link 2

    Link 3

    Vielen Dank für Ihre Hilfe!

    +1

    http://docs.aws.amazon.com/AWSECommerceService/ aktuell/DG/EX_RetrievingPriceInformation.html – jordanm

    +0

    @jordanm Eigentlich lernen wir gerade Daten zu verschrotten und wir tun es, um zu verstehen, wie es funktioniert. – Jeril

    +0

    Müssen Sie es in einer Zeile tun, oder können Sie 'find_all' nur dreimal aufrufen? – Will

    Antwort

    2

    Ich habe nicht getestet, aber ich glaube, Sie könnten Sie eine Funktion als Argument an find_all() passieren können so versuchen so etwas wie:

    def check_id(tag): 
        valid_ids = ['priceblock_ourprice','priceblock_saleprice','priceblock_dealprice'] 
        if tag.has_attr('id'): 
         return tag['id'] in valid_ids 
        else: 
         return False 
    
    m = soup1.find_all(check_id) 
    
    +0

    Vielen Dank. Es funktionierte. Könntest du bitte erklären, wie es funktioniert? Was macht der Tag-Parameter und wie wird 'check_id' ohne '()' aufgerufen? Ich bin neu in Python. Vielen Dank – Jeril

    Verwandte Themen