Python 如何使用BeautifulSoup提取特定字符串

Python 如何使用BeautifulSoup提取特定字符串,python,beautifulsoup,Python,Beautifulsoup,因此,我试图从CoinMarketCap.com检索比特币价格 我正在使用Python以及请求和bs4 import requests from bs4 import BeautifulSoup link = "https://coinmarketcap.com/currencies/bitcoin/" header = { "User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101

因此,我试图从CoinMarketCap.com检索比特币价格

我正在使用Python以及请求和bs4

import requests
from bs4 import BeautifulSoup

link = "https://coinmarketcap.com/currencies/bitcoin/"

header = {
    "User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0'}

data = requests.get(headers = header, url = link)

soup = BeautifulSoup(data.content, 'html.parser')

bitcoinPrice = soup.find(id="quote_price")

print(bitcoinPrice)
因此,当我运行脚本时,我得到了以下结果以及一些我不想要的额外代码。我只想要比特币的价格

<span data-currency-price="" data-usd="9806.68980398" id="quote_price">
<span class="h2 text-semi-bold details-panel-item--price__value" data-currency-value="">9806.69</span>
<span class="text-large" data-currency-code="">USD</span>
</span>

9806.69
美元

如何从这一大块数据中提取比特币价格?

我相信这应该能满足您的需求:

bitcoinPrice.span.contents[0]
包含

'9808.16'

这是使用css选择器的另一种方法

print(soup.select_one('.details-panel-item--price__value').text)
您可以在基本(免费)计划下使用,然后只需将API密钥添加到下面。代码示例更新自


谢谢,很好用。我似乎找不到任何关于“span”和“contents”方法的文档。
bitcoinPrice
是一类类型标记
span
是一个包含
HTML标记的字段,它也是标记类。Tag类有
内容
字段-检查文档。没有准确地给我价格,仍然是一个长字符串。它给你span标记以获得值9806.69你必须执行bitconprice.text
print(soup.select_one('.details-panel-item--price__value').text)
from requests import Request, Session
from requests.exceptions import ConnectionError, Timeout, TooManyRedirects
import json

url = 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/quotes/latest'
parameters = {
  'id':'1'
}
headers = {
  'Accepts': 'application/json',
  'X-CMC_PRO_API_KEY': 'api_key',
}

session = Session()
session.headers.update(headers)

try:
    response = session.get(url, params=parameters)
    data = json.loads(response.text)
    #print(data)
    print(data['data']['1']['quote']['USD']['price'])
except (ConnectionError, Timeout, TooManyRedirects) as e:
    print(e)