2017-04-06 67 views
0

我不熟悉用Python進行編碼。所以請耐心等待我試圖找出產品在亞馬遜上的產品圖片數量。 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

由於亞馬遜呈現它的頁面使用JavaScript,內容在客戶端產生,而不是服務器端。

當您使用請求時,您可以在服務器端獲取內容。爲了獲得在客戶端生成的內容,例如,您必須使用硒或dryscrape。

下面是一個工作代碼,它將計算產品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上出現錯誤「您正在使用不受支持的命令行標誌--ignore證書錯誤」 –

+0

一旦啓動Chrome瀏覽器,請轉到about:flags,然後Disable這個特定標誌。或者你可以在啓動'webdriver'之前設置'Chrome Profile' ... –

+0

我已經在FirefoxDriver上運行了,但是('li',{'class':'a-spacing-small item a-declarative' })顯示0圖像 –

相關問題