powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Парсер сайта
5 сообщений из 5, страница 1 из 1
Парсер сайта
    #38915808
Фотография _Novichok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.

Тренируюсь, пишу парсер сайта https://www.diablosport.com/products/trinity.html
Использую встроенный компонент WebBrowser
Хочу спарсить Year, Make, Model, Engine и характеристики устройства.
Исследовав иходный код страницы, понял, что делать выбор в комбобоксах програмно можно вызывая соответсвующие JavaScrip-функции в коде страницы:
Код: c#
1.
2.
3.
4.
webBrowser1.Document.InvokeScript("goToMake",new object[]{year});
webBrowser1.Document.InvokeScript("goToModel", new object[]{make});
webBrowser1.Document.InvokeScript("goToEngine", new object[]{model});
webBrowser1.Document.InvokeScript("showTunesParams", new object[]{engine, "2"});


(приведенно сокращенно, все делается в циклах с проверками и т.д.)
интересует собственно таблица с характеристиками прорграмматора, которая генерируется ajax-запросом на основе выбранных данных:
Функция JavaScript
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
function drawTunesTable()
{
        var tunesTable = $('<table/>').attr('class','zebra');
	var thead = $('<thead/>').html('<tr><th width="20%">Name</th><th>Description</th><th class="center" width="7%">HP</th><th class="center" width="7%">TQ</th>');
	var tfoot = $('<tfoot/>');
	var tbody = $('<tbody/>');
	
	for(i = 0; i < tunesParams.length; i++){
		if(tunesParams[i].catid == 3){
			if(i%4 == 3){
			  tr.appendTo(tbody);
			}
			if(i%4 == 0){
			  var tr = $('<tr/>');
			}
			var td = $('<td/>').html(tunesParams[i].value);
			if(i%4 == 2 || i%4 == 3){
				td.attr('class','center');
			}
			td.appendTo(tr);
		}
		
	}
	thead.appendTo(tunesTable);
	tfoot.appendTo(tunesTable);
	tbody.appendTo(tunesTable);

	$('#tunesbox').empty().fadeOut();
	setTimeout(function(){
			$('#tunesbox').html(tunesTable).fadeIn(); // тут осуществляется вывод таблицы
	}, 200);

}


( интересующая таблица )

При этом, используя средства для разработчика Chrome и исследуя исходный код страницы можно увидеть, что таблица есть
Но если просто посмотреть исходный код страницы (не в режиме разработчика, а, например, блокнотом), то видно, что соответствующий div пустой, что и получаю в результате использования WebBrowser, потому не могу видеть и парсить данные.

Были идеи слегка модифицировать ту функцию, встроить ее в код страницы, чтобы она просто выдавала нужные строки куда-нибудь на тоже встроенный контрол или сразу в C#-код, но не знаю насколько это возможно и возможно ли вообще.

Поделитесь, пожалуйста, кто знает, опытом, може есть какие идеи или размышления по этому поводу.

Спасибо
...
Рейтинг: 0 / 0
Парсер сайта
    #38915968
Фотография EDUARD SAPOTSKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При выборе в комбобоксах формируется get-запрос вида:
https://www.diablosport.com/products/index.php?option=com_updates&view=tunes&format=json&pid=2&vid=1110
Запросы возвращают json, который обворачивается функцией в html-таблицу, что мешает напрямую подергать все данные гетами с сервера? Здесь vid=1110 как понимаю id-шник категории, можно просто в цикле перебрать и json распарсить.
_Novichokсоответствующий div пустой, что и получаю в результате использования WebBrowser
WebBrowser здесь скорее всего и не причем, вы точно дожидаетесь окончания загрузки таблицы?
...
Рейтинг: 0 / 0
Парсер сайта
    #38916046
Фотография _Novichok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EDUARD SAPOTSKIвы точно дожидаетесь окончания загрузки таблицы?Да. установлен цикл на ожидание загрузки. Да и дело не в том, дожидаюсь я ее или нет. В режиме разработчика в хроме она есть, в исходном коде страницы она отсутствует. Изначально я и исходил из того, что таблица есть и ее будет нетрудно спарсить. Какая-то виртуальная она что ли.
Сейчас попробую подергать по той ссылке
...
Рейтинг: 0 / 0
Парсер сайта
    #38916112
Фотография EDUARD SAPOTSKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_NovichokКакая-то виртуальная она что ли.
Еще раз - нажмите в мозиле F12 - вкладка Network, открываем страницу и видим что пошли гет-запросы. Смотрим разметку - таблицы естественно нет, выбираем в комбобоксах категорию - смотрим в Network - пошел гет-запрос на сервер, который возвращает данные в json, скрипт подхватывает эти данные и рисует таблицу, вот и все премудрости.
...
Рейтинг: 0 / 0
Парсер сайта
    #38916136
Фотография _Novichok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EDUARD SAPOTSKI,

Тю, та тут вообще все просто: json со всеми vid присутствует в коде страницы. По ходу просто распарсить этот большой json и просто слать запросы на json-характеристики программатора и парсить ответ.
часть большого jsonvar applicationChartItems = {"1999":{"CHEVROLET":{"CORVETTE":[["5.7L LS1","876"]],"SILVERADO 1500":[["4.8L V8","881"],["5.3L V8","885"],["6.0L V8","889"]],"SILVERADO 2500":[["4.8L V8","893"],["5.3L V8","897"],["6.0L V8","901"]],"SILVERADO 3500":[["4.8L V8","905"],["5.3L V8","909"],["6.0L V8","913"]],"SUBURBAN":[["6.0L V8","921"]]},"GMC":{"SIERRA 1500":[["4.8L V8","937"],["5.3L V8","941"],["6.0L V8","945"]],"SIERRA 2500":[["6.0L V8","961"],["5.3L V8","957"],["4.8L V8","953"]],"SIERRA 3500":[["4.8L V8","1287"],["5.3L V8","972"],["6.0L V8","976"]]},"PONTIAC":{"FIREBIRD":[["5.7L LS1","1000"]],"TRANS AM":[["5.7L LS1","1004"]]}},"2000":{"CHEVROLET":{"CAMARO Z28\/SS":[["5.7L LS1","873"]],"CORVETTE":[["5.7L LS1","877"]],"SILVERADO 1500":[["4.8L V8","882"],["5.3L V8","886"],["6.0L V8","890"]],"SILVERADO 2500":[["4.8L V8","894"],["5.3L V8","898"],["6.0L V8","902"]],"SILVERADO 3500":[["4.8L V8","906"],["5.3L V8","910"],["6.0L V8","914"]],"SUBURBAN":[["5.3L V8","918"],["6.0L V8","922"]],"TAHOE":[["5.3L V8","934"],["4.8L V8","930"]]},"GMC":{"SIERRA 1500":[["4.8L V8","938"],["5.3L V8","942"],["6.0L V8","946"]],"SIERRA 2500":[["6.0L V8","962"],["5.3L V8","958"],["4.8L V8","954"]],"SIERRA 3500":[["4.8L V8","969"],["5.3L V8","973"],["6.0L V8","977"]],"YUKON":[["5.3L V8","989"],["6.0L V8","993"]]},"PONTIAC":{"FIREBIRD":[["5.7L LS1","1001"]],"TRANS AM":[["5.7L LS1","1005"]]}},"2001":{"CHEVROLET":{"CAMARO Z28\/SS":[["5.7L LS1","874"]],"CORVETTE":[["5.7L LS1","878"]],"CORVETTE Z06":[["5.7L LS6","1052"]],"SILVERADO 1500":[["4.8L V8","883"],["5.3L V8","887"],["6.0L V8","891"]],
Большое спасибо!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Парсер сайта
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]