Я пытаюсь получить доступ к данным (значению цитаты) с веб-сайта электронной коммерции, используя библиотеку запросов в Python. У меня проблема в том, что файлы cookie на веб-сайте являются динамическими. И моему коду требуется заголовок для получения ответа. Я могу открыть веб-сайт и очистить его, но для этого мне нужно скопировать данные заголовка из заголовка ответа. Однако мне нужно автоматизировать этот процесс, чтобы мне не приходилось вручную вставлять файл cookie каждый раз, когда я хочу очистить данные. Это ссылка "https://www.nseindia.com/get-quotes/equity?symbol=RELIANCE". Я пытаюсь получить данные «Внутридневного графика», чтобы сохранить их в DataFrame и построить график.
Я новичок и никогда раньше не парсил веб-страницы.
Это то, что я пробовал до сих пор.
import requests
import pandas as pd
# I take this data from the website response headers
headers = {
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Accept-Encoding': 'gzip, deflate, br, zstd',
'Accept-Language': 'en-US,en;q=0.5',
'Cookie' : 'Cookie Value'
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36',
'X-Requested-With': 'XMLHttpRequest'
}
response = requests.get(url = 'https://www.nseindia.com/api/chart-databyindex?index=RELIANCEEQN', headers = headers)
response.json()['grapthData']
reliance = pd.DataFrame(response.json()['grapthData'])
reliance.columns = ['Timestamp', 'Price']
reliance['Timestamp'] = pd.to_datetime(reliance['Timestamp'], unit = 'ms' )
reliance.plot(x = 'Timestamp', y = 'Price')
Чтобы извлечь данные с веб-сайта с помощью динамических файлов cookie, вам необходимо автоматически обрабатывать файлы cookie и заголовки. Один из способов добиться этого — использовать библиотеку запросов вместе с запросами.Session для управления и сохранения файлов cookie для нескольких запросов. Кроме того, при необходимости вы можете использовать библиотеку BeautifulSoup для анализа содержимого HTML.
Вот более автоматизированный подход к обработке динамических файлов cookie и заголовков:
Пример:
import requests
# Initialize a session to handle cookies
session = requests.Session()
# Initial request to get the dynamic cookies
url = 'https://www.nseindia.com/get-quotes/equity?symbol=RELIANCE'
initial_response = session.get(url)
# Now make the actual request to get the intraday chart data
data_url = 'https://www.nseindia.com/api/chart-databyindex?index=RELIANCEEQN'
response = session.get(data_url)
Использование Selenium для автоматизации браузера и извлечения файлов cookie может быть эффективным подходом к обработке динамических файлов cookie. Вот как вы можете использовать Selenium, чтобы открыть веб-страницу, получить файлы cookie, а затем использовать эти файлы cookie в библиотеке запросов для получения необходимых данных.
pip install requests pandas selenium
Пример:
from selenium import webdriver
import requests
import pandas as pd
import time
# Initialize the Selenium WebDriver
driver = webdriver.Chrome()
# Open the URL using Selenium
url = 'https://www.nseindia.com/get-quotes/equity?symbol=RELIANCE'
driver.get(url)
time.sleep(5)
# Extract cookies from the Selenium browser session
cookies = driver.get_cookies()
# Close the Selenium browser
driver.quit()
# Create a dictionary of cookies for the requests session
cookies_dict = {cookie['name']: cookie['value'] for cookie in cookies}
# Initialize a session to handle cookies
session = requests.Session()
# Set the headers for the session
session.headers.update({
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36',
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Accept-Encoding': 'gzip, deflate, br, zstd',
'Accept-Language': 'en-US,en;q=0.5',
'X-Requested-With': 'XMLHttpRequest'
})
# Set the cookies for the session
session.cookies.update(cookies_dict)
# Make the actual request to get the intraday chart data
data_url = 'https://www.nseindia.com/api/chart-databyindex?index=RELIANCEEQN'
response = session.get(data_url)
Этот подход сочетает в себе возможности автоматизации Selenium с простотой и эффективностью библиотеки запросов для выполнения HTTP-запросов, гарантируя, что вы сможете обрабатывать динамические файлы cookie без ручного вмешательства.