我正在练习美丽的汤,并正在寻找产品的价格,描述和项目编号。前两个是文本,很容易获取。第三个是标签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)
从soup中获取商品编号的语法是什么?
对不起-我正在寻找语法,可以迭代通过24个产品的页面,并恢复24个不同的项目编号。给出的示例是为了显示我想要的那部分属性值。我运行了给定的答案,它工作了。我不确定如何集成到给定的代码中,因为我使用的变体没有。有什么建议吗。
发布于 2018-07-11 14:13:38
您可以像访问字典一样访问该属性。
Ex:
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
https://stackoverflow.com/questions/51278332
复制相似问题