2016-04-16 19 views
2

私たちはAmazon.inのウェブサイトをスクラップして、どの製品の価格も検索していました。すべての商品は、 'span'タグの 'id'属性の値が異なります。Python - soup.find_all(....)の美味しいスープOR条件

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

私たちの仕事は、美しいスープのfind_all(..)メソッドを使って商品の価格を取り出すことです。

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

はfind_all(..)メソッド使用してOR条件に複数のパラメータを与えるためにどのような方法があります:下図のように私たちの基本的な知識から、我々はfind_all(..)メソッドのパラメータを1つだけ与えることができました?

同じ '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'を3回呼び出すことができますか? – 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

関連する問題