#c# #selenium #wget
#c# #селен #wget
Вопрос:
В целях автоматизации мне нужно загрузить этот файл Excel со скриптом на C #.
По следующей ссылке: https://live.euronext.com/products/etfs/list это кнопки для загрузки файла Excel, который я прикрепил на изображениях ниже.
На изображениях это способ
Но я не могу получить ссылку. Я попробовал с selenium, нажав на эту кнопку. Я также пытался найти ссылку с помощью консоли, но ничего не получалось. У кого-нибудь была подобная проблема?
Комментарии:
1. Установите Fiddler — telerik.com/fiddler — он будет захватывать и отображать запрос.
2. @AlexK. Спасибо за ваше предложение. Но он также не может перехватить ссылку с помощью telerik.
3. Без изменения каких-либо параметров на веб-сайте ссылка для скачивания выглядит следующим образом: live.euronext.com/pd/data/track /…
4. @Kaskorian Эта ссылка не загружает таблицу Excel, вместо этого она загружает пустой файл языка гипертекстовой разметки.
5. Вы просили ссылку. Ссылка правильная. Но при нажатии на кнопку отправляется форма. Итак, вам нужно отправить POST-запрос, а не GET-запрос. Кроме того, вы должны отслеживать данные, отправляемые с запросом POST. Вы не можете просто открыть ссылку.
Ответ №1:
Хорошо, я сделал для вас то, что упоминал в своем последнем комментарии:
using System;
using System.Linq;
using System.Net.Http;
using System.Web;
namespace ConsoleApp1 {
public class Program {
[STAThread]
static void Main(string[] args) {
// Post data
string queryString = @"
draw=92amp;
columns[0][data]=0amp;
columns[0][name]=amp;
columns[0][searchable]=trueamp;
columns[0][orderable]=trueamp;
columns[0][search][value]=amp;
columns[0][search][regex]=falseamp;
columns[1][data]=1amp;
columns[1][name]=amp;
columns[1][searchable]=trueamp;
columns[1][orderable]=falseamp;
columns[1][search][value]=amp;
columns[1][search][regex]=falseamp;
columns[2][data]=2amp;
columns[2][name]=amp;
columns[2][searchable]=trueamp;
columns[2][orderable]=falseamp;
columns[2][search][value]=amp;
columns[2][search][regex]=falseamp;
columns[3][data]=3amp;
columns[3][name]=amp;
columns[3][searchable]=trueamp;
columns[3][orderable]=falseamp;
columns[3][search][value]=amp;
columns[3][search][regex]=falseamp;
columns[4][data]=4amp;
columns[4][name]=amp;
columns[4][searchable]=trueamp;
columns[4][orderable]=falseamp;
columns[4][search][value]=amp;
columns[4][search][regex]=falseamp;
columns[5][data]=5amp;
columns[5][name]=amp;
columns[5][searchable]=trueamp;
columns[5][orderable]=falseamp;
columns[5][search][value]=amp;
columns[5][search][regex]=falseamp;
columns[6][data]=6amp;
columns[6][name]=amp;
columns[6][searchable]=trueamp;
columns[6][orderable]=falseamp;
columns[6][search][value]=amp;
columns[6][search][regex]=falseamp;
columns[7][data]=7amp;
columns[7][name]=amp;
columns[7][searchable]=trueamp;
columns[7][orderable]=falseamp;
columns[7][search][value]=amp;
columns[7][search][regex]=falseamp;
order[0][column]=0amp;
order[0][dir]=ascamp;
start=0amp;
length=20amp;
search[value]=amp;
search[regex]=falseamp;
args[initialLetter]=amp;
args[fe_type]=excelamp;
args[fe_layout]=veramp;
args[fe_decimal_separator]=.amp;
args[fe_date_format]=d/m/yamp;
iDisplayLength=20amp;
iDisplayStart=0amp;
sSortDir_0=asc";
// Because of the more readable version of the query string, there are a lot of new lines and tabs which have to be removed.
string cleanedQueryString = queryString.Replace(Environment.NewLine, "");
cleanedQueryString = cleanedQueryString.Replace("t", "");
var values = HttpUtility.ParseQueryString(cleanedQueryString);
var content = new FormUrlEncodedContent(values.AllKeys.ToDictionary(k => k, k => values[k]));
HttpClient client = new HttpClient();
var response = client.PostAsync("https://live.euronext.com/pd/data/track/download?mics=XAMS,XBRU,XLIS,XPAR,XLDN,XMSMamp;display_datapoints=dp_trackamp;display_filters=df_track", content).Resu<
var responseString = response.Content.ReadAsStringAsync().Resu<
System.IO.File.WriteAllText(@"C:Usersmalo0DownloadsEuronext_ETPs_2020-10-26.xls", responseString);
Console.WriteLine("Done!!!");
Console.ReadKey();
}
}
}
Строка запроса:
Это 4 параметра, которые вы можете установить во всплывающем окне загрузки
args[fe_type]=excel // selection between xls, csv, txt
args[fe_layout]=ver // layout horizontal/vertical
args[fe_decimal_separator]=. // decimal separator option
args[fe_date_format]=d/m/y // date format option
Комментарии:
1. Большое вам спасибо за ваше время и решение! У меня есть только еще одна проблема, когда я запускаю этот код. В строке «клиент. PostAsync («live.euronext.com/pd/data/track /…», содержание). Результат;» он выдает исключение: необработанное исключение типа ‘System. Исключение AggregateException’ произошло в mscorlib.dll Дополнительная информация: Произошла одна или несколько ошибок. У вас был тот же случай?
2. ДА. Иногда это случается. Для меня ошибка возникает, когда вы отправляете слишком много запросов за определенный промежуток времени. Похоже, что хост закрывает соединения, если он получил слишком много запросов от одного и того же клиента. Эта ошибка также возникает, когда вы делаете это в браузере. К сожалению, вы не можете принудительно воспроизвести ошибку. Просто попробуйте подождать заданный промежуток времени и повторно отправить запрос. Если вы зайдете в браузер и откроете веб-сайт, перейдите в инструмент разработки -> сеть и подождите. Вы увидите, что каждые 30 секунд веб-сайты отправляют запрос на обновление моего ответа.