Вопрос по C#

Fixer.ru

Client
Регистрация
10.09.2016
Сообщения
64
Благодарностей
13
Баллы
8
Всем привет. Пишу парсинг на c#, но что-то пошло не так.
Есть страница. с неё пытаюсь спарсить элементы, чтобы потом их обработать регуляркой(скорее всего даже и не понадобится) и вбить в таблицу. все подряд элементы не нужны, а нужны только из определённой области страницы.
Правильно ли я понимаю, что мне нужно отобрать эту область с помощью
Код:
HtmlElement allData=instance.ActiveTab.FindElementByAttribute("div", "class", "offer_container_inventory_steam", "regexp", 0);
а потом в этой области вычленять элементы? Как вычленить элементы, которые имеют вид:
Код:
<div title="" data-original-title="" market_hash_name="★ StatTrak™ M9 Bayonet | Doppler Sapphire (Factory New)" cost="2842" id="920999766676561198164210483" class="offer_container_invertory" bot_steamid="76561198164210483" assetid="9209997666">
<div title="" data-original-title="" market_hash_name="★ M9 Bayonet | Doppler Sapphire (Factory New)" cost="2128.5" id="923452869876561198304258842" class="offer_container_invertory" bot_steamid="76561198304258842" assetid="9234528698">
title пустой, остальные атрибуты всегда разные (все кроме class="offer_container_invertory").
Пробую
Код:
var itemsCollection=allData.FindElementsByAttribute("div", "class", "offer_container_inventory", "regexp")
выдаёт "не удалось найти метод расширения блаблабла".
Вообще у меня задача выпарсить аттрибут "market_hash_name" и "cost" и уложить в таблицу.
Всем спасибо, кто примет участие в обсуждении
 

romanov

Client
Регистрация
14.05.2016
Сообщения
57
Благодарностей
3
Баллы
8

Fixer.ru

Client
Регистрация
10.09.2016
Сообщения
64
Благодарностей
13
Баллы
8
Вопрос по C# был, но всё-равно спасибо.
Если я с C# вывожу в переменную zennoposter, а потом эту переменную обрабатываю через регулярку, это вроде как слишком ресурсозатратно (речь идёт о 15000 элементах, которые в идеале необходимо за 2-4 секунды обработать и закинуть в таблицу). Мне кажется если выдергивать ClassName("market_hash_name") *или что-то вроде этого* и складывать в таблицу у каждого элемента, то это будет более оптимизировано. Только я никак не могу с синтаксисом разобраться
 

romanov

Client
Регистрация
14.05.2016
Сообщения
57
Благодарностей
3
Баллы
8
Вопрос по C# был, но всё-равно спасибо.
Если я с C# вывожу в переменную zennoposter, а потом эту переменную обрабатываю через регулярку, это вроде как слишком ресурсозатратно (речь идёт о 15000 элементах, которые в идеале необходимо за 2-4 секунды обработать и закинуть в таблицу). Мне кажется если выдергивать ClassName("market_hash_name") *или что-то вроде этого* и складывать в таблицу у каждого элемента, то это будет более оптимизировано. Только я никак не могу с синтаксисом разобраться
Насколько мне известно, стим маркет (или любой другой сайт), не отдаст разом 15 тысяч элементов. Так что пока ты откроешь все страницы, пройдет время более 2-4 секунд.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
там, наверно, нужно файндчилдрен, а не файнэлементс
или гетчилдрен. Детки короче нужны
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
Наверно лучше отсюда парсить, причем GET запросом.

Регулярка для "market_hash_name"
Код:
(?<="m":").*?(?=")
Регулярка для "cost"
Код:
(?<="p":).*?(?=,)
UPD
Правильная ссылка, по которой парсить должна выглядеть так:
Код:
https://cs.money/load_all_bots_inventory?hash={-Variable.UnixTime-}
где {-Variable.UnixTime-} - переменная проекта, нужное значение которой можно получить кодом:
C#:
return DateTimeOffset.Now.ToUnixTimeMilliseconds();
Перед каждым запросом нужно получать новое значение этой переменной!
 
Последнее редактирование:
  • Спасибо
Реакции: Fixer.ru

Fixer.ru

Client
Регистрация
10.09.2016
Сообщения
64
Благодарностей
13
Баллы
8
Наверно лучше отсюда парсить, причем GET запросом.

Регулярка для "market_hash_name"
Код:
(?<="m":").*?(?=")
Регулярка для "cost"
Код:
(?<="p":).*?(?=,)
UPD
Правильная ссылка, по которой парсить должна выглядеть так:
Код:
https://cs.money/load_all_bots_inventory?hash={-Variable.UnixTime-}
где {-Variable.UnixTime-} - переменная проекта, нужное значение которой можно получить кодом:
C#:
return DateTimeOffset.Now.ToUnixTimeMilliseconds();
Господи, ты велеколепен ) спасибо огромное ) целый день сегодня хернёй получается страдал)
Открой секрет, как такую ссылку на подобных сайтах находить?)
 
  • Спасибо
Реакции: Dimionix

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
целый день сегодня хернёй получается страдал)
Ну всего один день - это ещё хорошо!
Открой секрет, как такую ссылку на подобных сайтах находить?)
Не обязательно, что вообще будут подобные ссылки. А конкретно в данном случае, я просто Fiddler'ом отснифал запрос, который отправляется при нажатии этой кнопки

Screenshot_1.png
 
  • Спасибо
Реакции: Fixer.ru

Fixer.ru

Client
Регистрация
10.09.2016
Сообщения
64
Благодарностей
13
Баллы
8
Ну всего один день - это ещё хорошо!

Не обязательно, что вообще будут подобные ссылки. А конкретно в данном случае, я просто Fiddler'ом отснифал запрос, который отправляется при нажатии этой кнопки

Посмотреть вложение 18824
Ещё раз огромное спасибо, даже не знаю как благодарить)
 
  • Спасибо
Реакции: Dimionix

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113

russya

Client
Регистрация
08.07.2014
Сообщения
743
Благодарностей
78
Баллы
28
return DateTimeOffset.Now.ToUnixTimeMilliseconds(); народ тут текущую дату переводм в уникс, а как дату с переменной перемести в уникс?
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)