#python #selenium
#python #селен
Вопрос:
У меня есть следующий код, и я пытаюсь очистить файл xls, который я должен использовать selenium, насколько я могу судить.
Веб-сайт использует следующий код для получения файла:
function GetQuote() {
$('#lblError').html('');
$('#lblError2').html('');
if ($('#txtTicker') != null amp;amp; $('#txtTicker').val() != null amp;amp; $('#txtTicker').val().trim() != ''){
trackGAEventGbl('quote-table-download', $('#txtTicker').val(), 'download');
var frm = document.forms[0];
if (window.location.href.indexOf('?') > -1) {
frm.action = window.location.pathname;
}
frm.submit();
return true;
}
else {
alert('Please enter a Stock or Index Symbol.');
return false;
}
}
Мне не повезло очистить это без использования selenium. Тем не менее, я нахожу, что для завершения кода требуется много времени, поскольку у меня есть несколько компаний, за которыми я слежу. Но также каждый раз, когда я использую selenium, используя приведенный ниже код, он открывает и закрывает новый экземпляр chrome. Есть ли способ ускорить это?
def get_file(ticker, url):
chrome_driver_path=r"D:Program Fileschromedriver84chromedriver.exe"
options = webdriver.ChromeOptions()
options.binary_location = r"C:Program FilesGoogleChromeApplicationchrome.exe"
driver = webdriver.Chrome(chrome_driver_path, options=options)
driver.get(url)
source = driver.page_source
inputElement = driver.find_element_by_id('txtTicker')
inputElement.send_keys(ticker)
inputElement.submit()
tickers = [line.rstrip() for line in open(r"C:Python38Projectsticker_list.txt", "r")]
for ticker in tickers:
get_file(ticker)
if os.path.exists(r'C:UsersDownloadsquotedata.dat'):
if os.stat(r'C:UsersDownloadsquotedata.dat').st_size != 0:
df = pd.read_csv(r'C:UsersDownloadsquotedata.dat',
header=None, sep=',', engine='python',skiprows=2)
new_header = df.iloc[0]
df = df[1:]
df.columns = new_header
print(df)
store_path = r"D:DataUSOption Data{}{} data.csv".format(ticker,ticker)
print(store_path)
df.to_csv(store_path, index = False)
os.remove(r"C:UsersDownloadsquotedata.dat")
count = count 1
print("Processed {} / {} Tickers".format(count, len_tickers))
Комментарии:
1. Пожалуйста, покажите вам полный код, где вы используете эту
get_file
функцию?2. Я не включил URL-адрес, если вам это нужно, я могу отправить через pm или что-то в этом роде
Ответ №1:
Просто определите driver
один раз в начале вашего скрипта, а затем используйте его в get_file
функции:
chrome_driver_path=r"D:Program Fileschromedriver84chromedriver.exe"
options = webdriver.ChromeOptions()
options.binary_location = r"C:Program FilesGoogleChromeApplicationchrome.exe"
driver = webdriver.Chrome(chrome_driver_path, options=options)
def get_file(ticker, url):
driver.get(url)
...
tickers = [line.rstrip() for line in open(r"C:Python38Projectsticker_list.txt", "r")]
for ticker in tickers:
get_file(ticker)
...