对于下面的链接,我想获取标题为“Current Calculated Hashrate”的框中的数字,然后打印该值。
<div class="panel-body" data-bind="text: hashrate() + ' H/s'">5,460.0 H/s</div>
div
类是panel-body
,我想从中提取hashrate()
的值,但我尝试过没有成功。
这是我尝试的但它不起作用:
import requests
from bs4 import BeautifulSoup
content = requests.get('https://xmr.nanopool.org/account/4GdoN7NCTi8a5gZug7PrwZNKjvHFmKeV11L6pNJPgj5QNEHsN6eeX3DaAQFwZ1ufD4LYCZKArktt113W7QjWvQ7CWAg4LmpcRHG1W15Y6h/001').text
soup = BeautifulSoup(content, "html.parser")
H_column = soup.find('div', class_='panel-body').get('hashrate')
print (H_column)
exit()
答案 0 :(得分:0)
您可以从data-bind="text: hashrate() + ' H/s'"
部分看到文本是动态生成的。 requests
模块无法执行任何脚本来获取动态生成的内容。 requests.get(...).text
为您提供原始页面来源,其中包含
<div class="panel-body" data-bind="text: hashrate() + ' H/s'"></div>
而不是您在检查时看到的HTML部分。
要解决此问题,您可以使用Selenium(for installation and demo refer this link)。
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://xmr.nanopool.org/account/4GdoN7NCTi8a5gZug7PrwZNKjvHFmKeV11L6pNJPgj5QNEHsN6eeX3DaAQFwZ1ufD4LYCZKArktt113W7QjWvQ7CWAg4LmpcRHG1W15Y6h/001')
html = driver.page_source
driver.quit()
soup = BeautifulSoup(html, 'lxml')
hashrate = soup.find('div', {'data-bind': "text: hashrate() + ' H/s'"}).text
print(hashrate)
输出:
6,930.0 H / s