【问题标题】:Fetching the table using pandas with selenium使用带有硒的熊猫来获取表格
【发布时间】:2023-03-23 03:35:01
【问题描述】:
import pandas as pd
import os
from webdriver_manager.chrome import ChromeDriverManager
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
options = Options()
options.add_argument('--ignore-certificate-errors')
options.add_argument('--start-maximized')
options.page_load_strategy = 'eager'
options.add_argument("--headless");
driver = webdriver.Chrome(options=options)
wait = WebDriverWait(driver, 20)   

url = "https://www.nseindia.com/get-quotes/derivatives?symbol=SBILIFE"
driver.get(url)

expiry = "29-Jul-2021"

我想点击“选项链”,我想将表中的所有数据提取到数据框中。我想每 30 秒运行一次并获取数据。

问题是,如果我使用,

import pandas as pd
tables = pd.read_html('https://www.nseindia.com/get-quotes/derivatives?symbol=SBILIFE')

但是,此链接不会获取正确的表格,因为正确的表格位于选项链选项卡中。所以,我必须使用硒。

有没有简单的方法来获取期权链表?

【问题讨论】:

  • 尝试driver.find_element_by_link_text('Option Chain').click(),然后尝试table = driver.find_element_by_id('optionChainTable-equity')
  • 它说,selenium.common.exceptions.ElementNotInteractableException for driver.find_element_by_link_text('Option Chain').click()

标签: python python-3.x pandas dataframe selenium-webdriver


【解决方案1】:

您可以转到“所有历史数据”选项卡选择年份和到期日期,然后下载 CSV。您可以使用 selenium 自动执行此部分。

编辑:

您可以打开开发者控制台查看网络选项卡。

您会发现一个请求(已标记)以 JSON 格式获取上表。 您不必使用硒。简单的requests.get 就可以了。您可以使用这些标头发出请求,您将获得 json。

【讨论】:

  • 如前所述,我需要以 30 秒的间隔获取实时数据,这在历史数据中是找不到的
  • @sam 请立即查看。
  • 我的意思是,不可能获取30秒间隔的历史数据。它只能以 1 d 的间隔获取历史数据。你能告诉我一个测试代码,它可以获取任何股票 6 个月的 30 秒数据吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-25
  • 2015-05-30
相关资源
最近更新 更多