2017-04-06 70 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图像 –

相关问题