Я новичок в веб-поиске и хотел почистить таблицу опционных цепочек (производных валют) от NSE. Я нашел похожий код в этом вопросе: Webscrapping цены на опционы NSE с использованием Python BeautifulSoup, относительно исправления кодировки , но он не извлекает значение (69.4598) над таблицей. Я хочу, чтобы это значение было выделено на изображении, но я не уверен, как извлечь его и закодировать в python. Я прикрепил скриншот веб-страницы вместе с окном элемента Google Inspect.
import requests
import pandas as pd
from bs4 import BeautifulSoup
Base_url = ("https://www.nseindia.com/live_market/dynaContent/live_watch/fxTracker/optChainDataByExpDates.jsp")
page = requests.get(Base_url)
soup = BeautifulSoup(page.content, 'html.parser')
table_it = soup.find_all(class_="opttbldata")
spot = soup.find(id = "td")
table_cls_1 = soup.find_all(id = "octable")
col_list = []
for mytable in table_cls_1:
table_head = mytable.find('thead')
try:
rows = table_head.find_all('tr')
for tr in rows:
cols = tr.find_all('th')
for th in cols:
er = th.text
ee = er.encode('utf8')
col_list.append(ee)
except:
print('no thread')
col_list_fnl = [e for e in col_list if e not in ('CALLS', 'PUTS', 'Chart', '\xc2\xa0')]
table_cls_2 = soup.find(id = "octable")
all_trs = table_cls_2.find_all('tr')
req_row = table_cls_2.find_all('tr')
new_table = pd.DataFrame(index=range(0,len(req_row)-3),columns = col_list_fnl)
row_marker = 0
for row_number, tr_nos in enumerate(req_row):
if row_number <= 1 or row_number == len(req_row)-1:
continue # To insure we only choose non empty rows
td_columns = tr_nos.find_all('td')
# Removing the graph column
select_cols = td_columns[1:22]
cols_horizontal = range(0,len(select_cols))
for nu, column in enumerate(select_cols):
utf_string = column.get_text()
utf_string = utf_string.strip('\n\r\t": ')
tr = utf_string.encode('utf8')
new_table.iloc[row_marker,[nu]] = tr
row_marker += 1
print(new_table)