python - 如何使用 Python 从表中选择特定值?
问题描述
所以,我目前有这个从 finviz 提取数据并输出股票的整个统计表。但是,我希望只能从特定的“单元格中提取金额或百分比:
#---------- Pretend to be a browser. ----------#
headers = {
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36",
"X-Requested-With": "XMLHttpRequest"
}
#---------- Import needed modules. ----------#
import pandas as pd
from bs4 import BeautifulSoup
import requests
#---------- Choose your ticker. Takes input. ----------#
ticker = input("Please choose a ticker symbol: ")
print("Loading data for " + ticker.upper())
#---------- Pulling the data from chosen stock ticker ----------#
url = ('https://finviz.com/quote.ashx?t=' + ticker.upper())
req = requests.get(url,headers=headers)
table = pd.read_html(req.text, attrs = {"class":"snapshot-table2"} )
df = table[0]
print(df)
这给了我(我切断了一些输出,以免问题太长):
请选择股票代码:ko
为 KO 加载数据
0 1 2 3 4 5 \
0 Index DJIA S&P500 P/E 30.02 EPS (ttm) 1.87
1 Market Cap 242.71B Forward P/E 23.00 EPS next Y 2.44
2 Income 8.08B PEG 2.97 EPS next Q 0.58
3 Sales 36.41B P/S 6.67 EPS this Y -13.30%
4 Book/sh 5.16 P/B 10.85 EPS next Y 7.84%
5 Cash/sh 3.01 P/C 18.61 EPS next 5Y 10.12%
6 Dividend 1.68 P/FCF 93.97 EPS past 5Y 1.40%
7 Dividend % 3.00% Quick Ratio 1.30 Sales past 5Y -5.70%
8 Employees 80300 Current Ratio 1.50 Sales Q/Q 41.70%
9 Optionable Yes Debt/Eq 1.89 EPS Q/Q 47.70%
10 Shortable Yes LT Debt/Eq 1.79 Earnings Jul 21 BMO
11 Recom 2.20 SMA20 -1.44% SMA50 0.48%
我怎样才能只拉一个“细胞”?假设我想要当前的市盈率,我怎么才能得到“30.02”?谢谢!
解决方案
您可以通过这种方式简单地打印任何选择性数据:
#---------- Pretend to be a browser. ----------#
headers = {
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36",
"X-Requested-With": "XMLHttpRequest"
}
#---------- Import needed modules. ----------#
import pandas as pd
from bs4 import BeautifulSoup
import requests
#---------- Choose your ticker. Takes input. ----------#
ticker = input("Please choose a ticker symbol: ")
print("Loading data for " + ticker.upper())
#---------- Pulling the data from chosen stock ticker ----------#
url = ('https://finviz.com/quote.ashx?t=' + ticker.upper())
req = requests.get(url,headers=headers)
table = pd.read_html(req.text, attrs = {"class":"snapshot-table2"} )
df = table[0]
print(f'{df[2][0]}: {df[3][0]}')
输出:
Please choose a ticker symbol: ko
Loading data for KO
P/E: 30.02
推荐阅读
- php - 遍历 Posted Array 以输出所有姓氏
- azure - Azure 域服务 LDAP 的 TLSv1.1 实施
- python - 一个脚本中有多个 cisco 交换机的问题
- sql - SET IDENTITY_INSERT 在我的参数里面它不起作用
- swift - 为什么这个函数不会返回用户名是否已经被使用?
- node.js - 在生产环境 [NGINX] [Express] [Node] 中,请求被解释为 GET 而不是 POST
- python - 需要帮助使用 Selenium 获取数据
- php - parent.postMessage(数据)失败
- node.js - Deno:写入 Docker 容器上的 CSV 文件(权限被拒绝(操作系统错误 13))
- reactjs - 我在哪里可以获得类似于引导模板的反应模板?