Python 3 Web Scrape和Beautiful Soup标签属性

时间:2018-07-11 06:10:43

标签: python beautifulsoup

我正在练习Beautiful Soup,并且正在寻找产品价格,描述和产品编号。前两个是文本,很容易获得。第三个是标签data-trade-price的属性,如下所示:-

<div class="price-group display-metro has-promo-price  medium ng-scope" ng-class="{'has-trade-price': ShowTrade}" data-trade-price="221043">

我在页面加载的数字之后,例如 221043 。 IE-与所有24个产品匹配的所有24个产品编号

我的代码是:-

import requests  
r = requests.get('http://www.supercheapauto.com.au/store/car-care/wash-wax-polish/1021762?page=1&pageSize=24&sort=-ProductSummaryPurchasesWeighted%2C-ProductSummaryPurchases')

from bs4 import BeautifulSoup  
soup = BeautifulSoup(r.text, 'lxml')  
results = soup.find_all('div', class_='details')

for result in results: 
    try:
        SKU = result.select_one("data-trade-price")
    except AttributeError: SKU = "N/A"

    DESC = result.find('div', class_='title').text.strip().upper()
    PRICE = result.find('span', class_='currency').text.strip().upper()

    print(SKU,'\t', DESC,'\t', PRICE)

从汤中获取物品编号的语法是什么?

对不起-我使用的语法可以遍历24个产品的页面并恢复24个不同的商品编号。给出的示例旨在显示我所追求的部分属性值。我跑了给定的答案,它的工作原理。我不确定如何集成到给定的代码中,因为我使用的变体没有。有任何建议。

1 个答案:

答案 0 :(得分:0)

您可以像访问字典一样访问属性。

例如:

from bs4 import BeautifulSoup
s = """<div class="price-group display-metro has-promo-price medium ng-scope" ng-class="{'has-trade-price': ShowTrade}" data-trade-price="221043"<\div>"""
soup = BeautifulSoup(s, "html.parser")
print( soup.find("div", class_="price-group display-metro has-promo-price medium ng-scope").attrs["data-trade-price"] )

print( soup.find("div", class_="price-group display-metro has-promo-price medium ng-scope")["data-trade-price"] )

输出:

221043