【问题标题】:Cannot get text of a span attribute using BeautifulSoup无法使用 BeautifulSoup 获取跨度属性的文本
【发布时间】:2020-02-07 13:19:04
【问题描述】:

我正在尝试从以下获取

<span id="SkuNumber" itemprop="identifier" content="sku:473768" data-nodeid="176579" class="product-code col-lg-4 col-md-4">ΚΩΔ. 473768</span></div>

data-nodeid 的值 我做了以下

price_nodes = soup.find('span', attrs={'id': 'SkuNumber'})
datanode = price_nodes.select_one('span[data-nodeid]')

但我得到“无” 我怎样才能解决这个问题?谢谢

【问题讨论】:

    标签: python beautifulsoup


    【解决方案1】:

    如果price_nodes 填写正确

    price_nodes =

    <span id="SkuNumber" itemprop="identifier" content="sku:473768" data-nodeid="176579" class="product-code col-lg-4 col-md-4">ΚΩΔ. 473768</span>
    

    你只需要这样做:

    datanode = price_nodes.get('data-nodeid')
    

    完整的代码应该是:

    from bs4 import BeautifulSoup as soup
    
    html = '<div><span id="SkuNumber" itemprop="identifier" content="sku:473768" data-nodeid="176579" class="product-code col-lg-4 col-md-4">ΚΩΔ. 473768</span></div>'
    page = soup(html, 'html.parser')
    price_nodes = page.find('span', {'id': 'SkuNumber'})
    datanode = price_nodes.get('data-nodeid')
    

    【讨论】:

    • price_nodes['data-nodeid'] 比 price_nodes.get('data-nodeid') 快吗?
    • 如此处所说:stackoverflow.com/a/36566435/2437141, get() 似乎有点慢(但不是很多),但如果值不存在,它允许您定义默认值,例如 @987654328 @
    【解决方案2】:
    from bs4 import BeautifulSoup
    
    html = '<span id="SkuNumber" itemprop="identifier" content="sku:473768" data-nodeid="176579" class="product-code col-lg-4 col-md-4">ΚΩΔ. 473768</span></div>'
    soup = BeautifulSoup(html)
    
    price_nodes = soup.find('span', attrs={'id': 'SkuNumber'})
    print(price_nodes['data-nodeid'])
    

    【讨论】:

      猜你喜欢
      • 2019-03-09
      • 2021-10-05
      • 1970-01-01
      • 2021-07-14
      • 2021-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多