我正在练习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个不同的商品编号。给出的示例旨在显示我所追求的部分属性值。我跑了给定的答案,它的工作原理。我不确定如何集成到给定的代码中,因为我使用的变体没有。有任何建议。
答案 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