2016-12-01 13 views
0

私たちはUrban Outfittersの製品を掻き集めようとしており、BeautifulSoup findメソッドには奇妙な問題があります。商品URLにsoup.find( 'span'、{"class": "mainPrice ng-scope ng-binding"})を呼び出して価格を取得します。プロダクトURLを(ウェブクロールによって)調べると、soup.findコールは無作為に何も返されません。BeautifulSoupランダムに返すなしを検索

たとえば、プログラムを1回実行すると、2番目のリンクではnoneが返されます。何も変更せずにすぐにプログラムを実行すると、2番目のリンクを越えてしまい、8番目のリンクで失敗しました。無関係な機能が省かれている

def findPrice(soup): 
     price = soup.find('span', {"class" : "mainPrice ng-scope ng-binding"}) 
     print price 
     if price is not None: 
     return price.text.strip() 

    def postProduct(url): 
     driver.get(url) 
     html = driver.page_source 
     soup = BeautifulSoup(html, "html.parser") 
     product = {'brand': findBrand(soup), 'name': findProductName(soup), 'price': findPrice(soup), 'image': findImageLink(soup), 'description': findDescription(soup), 'url': url} 
     # products.insert(product) 

注:Here is a link to our output

以下は私たちのコードです。

Link to the loop containing postProduct function

この問題を提供することができる任意の助けをいただければ幸いです。以下は、私たちがpostProduct関数を呼び出しているループがあります。

答えて

0

ウェブコンテンツをスクラップし、ウェブスクレーパーの実行結果と次のスクレーパー結果が異なる場合、プログラムを変更していなくても、検索されたウェブコンテンツは1つの走行から次の走行へと変化する。

findPriceのエラーをキャッチして、次回発生したときにページソースをダンプして、soup.findコールが探しているものを見つけることができない理由を確認してください。

関連する問題