2017-04-06 8 views
0

Pythonでコーディングするのに新しい。ですから、製品がAmazonで持っている製品イメージの数を見つけようとしています。 1.正しく動作させることはできませんか? 2. ASINSのリストを挿入する方法はありますか?その番号がすべて印刷されますか? ありがとう!アマゾンで画像をカウントする製品詳細ページPython

import bs4 
 
import webbrowser 
 
import requests 
 
File = requests.get('https://www.amazon.com/dp/B01MRXQPJ5') 
 
soup = bs4.BeautifulSoup(File.text, 'html.parser') 
 
elems = soup.select('ul.a-unordered-list a-nostyle a-button-list a-vertical a-spacing-top-micro > li ')

答えて

0

AmazonはそれではJavaScriptを使用して、ページのレンダリングので、コンテンツではなく、サーバー側で、クライアント側で生成されます。

リクエストを使用すると、サーバー側でコンテンツが取得されます。クライアント側で生成されたコンテンツを取得するには、たとえばセレンまたはドライス​​クレイプを使用する必要があります。

ここでは、製品IDのリストの項目数を数えるワーキングコードを示します。

コード:

import selenium.webdriver as webdriver 
import lxml.html as html 
import lxml.html.clean as clean 

urls = ['B017TSPK5K', 'B00B96KLCQ', 'B01MZ9E6CG'] 

browser = webdriver.Chrome() 

for url in urls: 
    amazon_url = "https://www.amazon.com/dp/{}".format(url) 

    browser.get(amazon_url) 
    content = browser.page_source 

    cleaner = clean.Cleaner() 
    content = cleaner.clean_html(content) 
    doc = html.fromstring(content) 
    soup = BeautifulSoup(content, 'html.parser') 

    soup_li = soup.find_all('li', {'class':'a-spacing-small item a-declarative'}) 

    print("Product ID: {} has {} images.".format(url, len(soup_li))) 

browser.close() 

出力:

'Product ID: B017TSPK5K has 2 images.' 
'Product ID: B00B96KLCQ has 5 images.' 
'Product ID: B01MZ9E6CG has 3 images.' 
+0

ありがとう!これはうまくいくように見えますが、Chromeでエラーが発生しています。「サポートされていないコマンドラインのフラグを使用しています。証明書のエラーを無視しています」 –

+0

「Chrome」を起動したら、about:flagsを開き、 'webdriver'を起動する前に' Chrome Profile'をセットアップすることができます... –

+0

FirefoxDriverで動作するようになっていますが、 'li'、{'class': 'a-spacing-small item a-declarative' })は0画像を表示しています –

関連する問題