如何在span类中python抓取文本

2024-10-16 17:25:53 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我在做一个比特币检查器的练习,我在抓取数据时遇到了困难,因为我想要的数据在一个span类中,我不知道如何检索数据。在

下面是我从inspect得到的信息:

 <span class="MarketInfo_market-num_1lAXs"> 11,511.31 USD </span>

我想刮一下“11511.31”号码。我该怎么做? 我尝试了很多不同的方法,但我真的不知道该怎么做了。在

以下是URL:link

我在刮当前的美元价格(在“BTC/USD”旁边)

编辑:伙计们,你们给我的很多例子都是我输入数据的地方。这没用,因为我想每隔30秒刷新一次页面,所以我需要程序来找到span类并提取数据并打印它

在编辑:当前代码。需要得到程序来获得“html”部分本身

^{pr2}$

Tags: 数据方法程序信息url编辑linkmarket
3条回答

试试像Selenium Firefox这样的真正的浏览器。我试图使用Selenium PhantomJS,但失败了。。。在

from selenium import webdriver
from bs4 import BeautifulSoup
from time import sleep

url = 'https://www.gdax.com/trade/BTC-USD'

driver = webdriver.Firefox(executable_path='./geckodriver')

driver.get(url)
sleep(10) # Sleep 10 seconds while waiting for the page to load...

html = driver.page_source
soup = BeautifulSoup(html, "lxml") 
spans=soup.find_all('span', {'class': 'MarketInfo_market-num_1lAXs'})
for span in spans:
    print(span.text.replace('USD','').strip())

driver.close()

输出:

^{pr2}$

你只需搜索正确的标签和类别-

from bs4 import BeautifulSoup

html_text = """
<span class="MarketInfo_market-num_1lAXs"> 11,511.31 USD </span>
"""

html = BeautifulSoup(html_text, "lxml")

spans = html.find_all('span', {'class': 'MarketInfo_market-num_1lAXs'})
for span in spans:
    print(span.text.replace('USD', '').strip())

搜索所有<span>标记,然后按class属性过滤它们,在本例中,该属性的值为MarketInfo_market-num_1lAXs。过滤器完成后,只需在跨度中循环,并使用.text属性来检索文本,然后只需替换“USD”。在

更新

^{pr2}$

不需要理解HTML。HTML标记中的数据是从具有JSON响应的API调用填充的。你可以直接调用这个API。这将使您的数据保持最新。在

您可以使用beautifulsouplxml。在

对于beauthulsoup,代码如下

from bs4 import BeautifulSoup

soup = BeautifulSoup("""<span class="MarketInfo_market-num_1lAXs"> 11,511.31 USD </span>""", "lxml")

print(soup.string)

lxml更快

^{pr2}$

相关问题 更多 >