如何解析一个属性?
Posted
技术标签:
【中文标题】如何解析一个属性?【英文标题】: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)
【问题讨论】:
【参考方案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'
>>>
【讨论】:
以上是关于如何解析一个属性?的主要内容,如果未能解决你的问题,请参考以下文章