首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python 3网络抓取& Beautiful Soup标签属性

Python 3网络抓取& Beautiful Soup标签属性
EN

Stack Overflow用户
提问于 2018-07-11 14:10:43
回答 1查看 924关注 0票数 0

我正在练习美丽的汤,并正在寻找产品的价格,描述和项目编号。前两个是文本,很容易获取。第三个是标签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个不同的项目编号。给出的示例是为了显示我想要的那部分属性值。我运行了给定的答案,它工作了。我不确定如何集成到给定的代码中,因为我使用的变体没有。有什么建议吗。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51278332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档