Для себя делаю мелкий граббер инфы из игры ogame. По задумке, мне надо авторизоваться, а затем, посылая http запросы и парся ответную страничку, исполнять скрипты.
Какое API для этого использовать из C#? Какой язык\API вообще кошерно использовать для таких целей?
Re: Какое API использовать чтобы парсить данные сайта?
M>Для себя делаю мелкий граббер инфы из игры ogame. По задумке, мне надо авторизоваться, а затем, посылая http запросы и парся ответную страничку, исполнять скрипты. M>Какое API для этого использовать из C#? Какой язык\API вообще кошерно использовать для таких целей?
Для C# HttpWebRequest + HtmlAgilityPack
Дополнительно (must have): Fiddler
А также быть готовым в временным банам на сайте за подозрительные запросы
Re: Какое API использовать чтобы парсить данные сайта?
Здравствуйте, mangaman, Вы писали:
M>Всем привет
M>Для себя делаю мелкий граббер инфы из игры ogame. По задумке, мне надо авторизоваться, а затем, посылая http запросы и парся ответную страничку, исполнять скрипты. M>Какое API для этого использовать из C#? Какой язык\API вообще кошерно использовать для таких целей?
Кстати попробовал для интереса сайст с формированием таблицы с помощью JqGrid
Работает
private async void button6_Click(object sender, EventArgs e)
{
var url = "МойУрл";
var config = new AngleSharp.Configuration()
.WithCss()
.WithDefaultLoader()
.WithJavaScript();
var html = DocumentBuilder.Html(new Uri(url), config);
var form = html.Forms[0] as AngleSharp.Dom.Html.IHtmlFormElement;
var name = form.Elements["SearchString"] as AngleSharp.Dom.Html.IHtmlInputElement;
name.Value = "16 st9";
var doc= await form.Submit();
}
и солнце б утром не вставало, когда бы не было меня
Re[3]: Какое API использовать чтобы парсить данные сайта?
Здравствуйте, Serginio1, Вы писали:
S>Здравствуйте, Serginio1, Вы писали:
S>Кстати попробовал для интереса сайст с формированием таблицы с помощью JqGrid S>Работает
S>
S>private async void button6_Click(object sender, EventArgs e)
S> {
S> var url = "МойУрл";
S> var config = new AngleSharp.Configuration()
S> .WithCss()
S> .WithDefaultLoader()
S> .WithJavaScript();
S> var html = DocumentBuilder.Html(new Uri(url), config);
S> var form = html.Forms[0] as AngleSharp.Dom.Html.IHtmlFormElement;
S> var name = form.Elements["SearchString"] as AngleSharp.Dom.Html.IHtmlInputElement;
S> name.Value = "16 st9";
S> var doc= await form.Submit();
S> }
S>
Правда DocumentBuilder.Html устаревший вместо него
static AngleSharp.Dom.IDocument Load(String url)
{
var config = new AngleSharp.Configuration().WithDefaultLoader();
return AngleSharp.BrowsingContext.New(config).OpenAsync(Url.Create(url)).Result;
}
Здравствуйте, Serginio1, Вы писали:
S>Здравствуйте, Serginio1, Вы писали:
S>>Здравствуйте, Serginio1, Вы писали:
S>>Кстати попробовал для интереса сайст с формированием таблицы с помощью JqGrid S>>Работает
S>>
S>>private async void button6_Click(object sender, EventArgs e)
S>> {
S>> var url = "МойУрл";
S>> var config = new AngleSharp.Configuration()
S>> .WithCss()
S>> .WithDefaultLoader()
S>> .WithJavaScript();
S>> var html = DocumentBuilder.Html(new Uri(url), config);
S>> var form = html.Forms[0] as AngleSharp.Dom.Html.IHtmlFormElement;
S>> var name = form.Elements["SearchString"] as AngleSharp.Dom.Html.IHtmlInputElement;
S>> name.Value = "16 st9";
S>> var doc= await form.Submit();
S>> }
S>>
S>Правда DocumentBuilder.Html устаревший вместо него
S>
S>static AngleSharp.Dom.IDocument Load(String url)
S> {
S> var config = new AngleSharp.Configuration().WithDefaultLoader();
S> return AngleSharp.BrowsingContext.New(config).OpenAsync(Url.Create(url)).Result;
S> }
S>
Здравствуйте, mangaman, Вы писали:
M>Всем привет
M>Какое API для этого использовать из C#? Какой язык\API вообще кошерно использовать для таких целей?
Юзай регекспы — самый продуктивный и малозатратный по времени и качеству способ, разные библиотеки типа htmlagilitypack не всегда могут нормально работать с не валидным html перемешаным с js, css и другим текстом.
Підтримати Україну у боротьбі з країною-терористом.
Здравствуйте, _ichensky, Вы писали:
_>Юзай регекспы — самый продуктивный и малозатратный по времени и качеству способ, разные библиотеки типа htmlagilitypack не всегда могут нормально работать с не валидным html перемешаным с js, css и другим текстом.
В том комментарии предлагают испозовать XML парсер,
т.к. в html если можно исспользовать повторяющиеся, динамически появляющиеся теги и т.д.., но никто не запещаеть написать две функции которые перед регекспами обработают данные которые пришли с сервера.
Если не так, прошу пример в студию (который нельзя будет расспарсить регекспом и выдрать нужные данные).
Только вот, если на странице будет не валидный с точки зрения xml-ля. html.
Браузер кое как справиться и все-равно отобразит текст или запустип какую-то функцию, а вот xml парсер сломается, напр.:
<someTag style=".." <someTag2 attr=""/>abc
</someTag>
1. Что бы распарсить подобный текст.
___а. Надо будет улучшить сам xml парсер, что бы он умел обрабатывать подобный код.
или
___б. Потратить 1 минуту на написание регекспа, который выдерает текст из данных что пришли с сервера.
2. Если на сайте снова переверстают страницу.
___а. Надо будет снова парситть xml парсером и снова его доделывать.
или
___б. Потратить еще 1 минуту на написание нового регекспа.
Підтримати Україну у боротьбі з країною-терористом.
S> Прошу прощения за ложную информацию, но в обработчике нажатии кнопки присутствует и обработка без JavaScript.\ S>Рано обрадовался
Тэк, я еще не такой спец чтоб сильно тут понять, но буду разбираться
Re[6]: Какое API использовать чтобы парсить данные сайта?
Здравствуйте, mangaman, Вы писали:
S>> Прошу прощения за ложную информацию, но в обработчике нажатии кнопки присутствует и обработка без JavaScript.\ S>>Рано обрадовался M>Тэк, я еще не такой спец чтоб сильно тут понять, но буду разбираться
Ситуация такая, что на кнопку навешен обработчик
$(document).ready(function () {
$('#SearchTovar').submit(function () {
// проверяем пару полейif ($(this).valid()) {
var data = $('#SearchString').val();
showDataGrid(data);
}
return false; // и этим false отменяем отправку формы
});
});
Но при submit формы этот обработчик не вызывается
и солнце б утром не вставало, когда бы не было меня
Re[6]: Какое API использовать чтобы парсить данные сайта?
Здравствуйте, mangaman, Вы писали:
S>> Прошу прощения за ложную информацию, но в обработчике нажатии кнопки присутствует и обработка без JavaScript.\ S>>Рано обрадовался M>Тэк, я еще не такой спец чтоб сильно тут понять, но буду разбираться