2016-04-16 69 views
2

我們正在取消Amazon.in網站檢索任何產品的價格。所有產品在'span'標籤中具有不同的'id'屬性值,例如:Python - 美麗的湯OR條件在soup.find_all(....)

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

我們的任務是在Beautiful Soup中使用find_all(..)方法檢索產品的價格。從我們的基本知識,我們能夠給只有一個參數的find_all(..)方法,如下圖所示:

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

有沒有什麼辦法讓多個參數使用或病症的方法的find_all(..) ?

以下是用相同的 'id' 屬性的不同值的鏈接:

Link 1

Link 2

Link 3

謝謝您的幫助!

+1

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

+0

@jordanm其實我們正在學習數據報廢,我們正在努力瞭解其工作。 – Jeril

+0

你需要在一行中完成,還是隻需要調用'find_all'三次? – Will

回答

2

我沒有測試過這一點,但我相信你可以將一個函數作爲參數傳遞給find_all()所以你可以嘗試這樣的:

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

非常感謝。有效。你能解釋一下它的工作嗎?什麼是標籤參數在做什麼以及如何在沒有任何'()'的情況下調用id'check_id'。我是python的新手。謝謝 – Jeril