【问题标题】:Count Images on Amazon Product Detail Page Python在亚马逊产品详细信息页面 Python 上计算图像
【发布时间】:2017-04-06 14:37:26
【问题描述】:

我是使用 Python 编码的新手。所以请耐心等待我试图找到产品在亚马逊上的产品图片数量。 1. 我似乎无法正常工作? 2. 有没有办法插入一个 ASINS 列表,以便它们都可以打印出来? 谢谢!

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 ')

【问题讨论】:

    标签: python selenium-webdriver amazon


    【解决方案1】:

    由于亚马逊使用 javascript 呈现其页面,因此内容是在客户端而不是服务器端生成的。

    当您使用请求时,您会在服务器端获取内容。例如,要获取在客户端生成的内容,您必须使用 selenium 或 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.'
    

    【讨论】:

    • 谢谢!这看起来可行,但我在 Chrome 上不断收到错误“您正在使用不受支持的命令行标志 - 忽略证书错误”
    • 一旦你启动Chromeabout:flags 然后Disable 这个特殊的标志。或者您可以在启动 webdriver 之前设置一个 Chrome Profile...
    • 我让它在 FirefoxDriver 上工作,但 ('li', {'class':'a-spacing-small item a-declarative'}) 显示 0 张图片
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多