【问题标题】:How to parse an attribute?如何解析一个属性?
【发布时间】:2020-01-18 06:39:19
【问题描述】:

如何从数据值中解析值?

<a href="example.com" data-ref="TopRates" data-type="price" data-value="1212749" data-changescale="1" data-market-id="curr_one" data-symbol="curr_one">curr_one</a>

这里我有一个脚本示例,它正在搜索第一个具有看涨颜色类的跨度,并在屏幕上显示该跨度中的内容。我应该如何从 data-value 中解析一个值并将其显示在上面的示例中的屏幕上?

from bs4 import BeautifulSoup
import requests
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

Options = webdriver.ChromeOptions()
Options.add_argument('--headless')
Options.add_argument('--disable-gpu')
Options.add_argument('--no-sandbox')

url = "http://example.com"
browser = webdriver.Chrome(chrome_options = Options, executable_path="/usr/local/bin/chromedriver")
browser.get(url)

soup = BeautifulSoup(browser.page_source, features="html.parser")
a = soup.find("span", {"class": "bullish-color"})
print(a.text)

【问题讨论】:

    标签: python selenium-webdriver beautifulsoup


    【解决方案1】:

    找到元素后,可以通过以下方式获取属性值:

    from bs4 import BeautifulSoup
    
    html = '''<a href="example.com" data-ref="TopRates" data-type="price" data-value="1212749" data-changescale="1" data-market-id="curr_one" data-symbol="curr_one">curr_one</a>'''
    soup = BeautifulSoup(html, features="html.parser")
    
    print (soup.find('a')['data-value'])
    

    输出:

    1212749
    

    【讨论】:

      【解决方案2】:

      使用更快的 CSS 选择器。

      from bs4 import BeautifulSoup
      data='''<a href="example.com" data-ref="TopRates" data-type="price" data-value="1212749" data-changescale="1" data-market-id="curr_one" data-symbol="curr_one">curr_one</a>'''
      soup=BeautifulSoup(data,'html.parser')
      print(soup.select_one('a[data-value]')['data-value']) 
      

      输出

      1212749
      

      在你的情况下,这应该有效。

      soup = BeautifulSoup(browser.page_source, features="html.parser")
      print(soup.select_one('a[data-value]')['data-value'])
      

      【讨论】:

        【解决方案3】:

        这样做会起作用:

        >>> from bs4 import BeautifulSoup
        >>> page = '''<a href="http://example.com" data-ref="TopRates" data-type="price" data-value="1212749" data-changescale="1" data-market-id="curr_one" data-symbol="curr_one">curr_one</a>'''
        >>> soup = BeautifulSoup(page, features="html.parser")
        >>> a = soup.find('a')
        >>> a.attrs
        {'data-changescale': '1', 'data-value': '1212749', 'data-market-id': 'curr_one', 'data-type': 'price', 'href': 'http://example.com', 'data-symbol': 'curr_one', 'data-ref': 'TopRates'}
        >>> 
        >>> a.attrs['data-value']
        '1212749'
        >>>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-03-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-02
          相关资源
          最近更新 更多