Пытаюсь научиться парсить сайт с торговыми данными. Данные постоянно обновляются да и самих предметов около 30 штук.
Открываю страницу. В исходном коде ищу нужный блок. Полностью парсю блок в текстовый документ и дальше уже привожу к читабельному виду сами записи в Блокноте.
Вот используемый код:
Код:
class Program
{
[STAThread]
static void Main(string[] args)
{
Console.OutputEncoding = Encoding.UTF8;
using (var browser = new FireFox("Ссылка на страницу"))
{
Settings.WaitForCompleteTimeOut = 999999999;
var doc = new HtmlDocument();
doc.LoadHtml(browser.Body.OuterHtml);
var dataBlock = doc.DocumentNode.SelectSingleNode("//div[@class=\"nav-tabs-custom\"]");
//dataBlock = doc.DocumentNode.SelectSingleNode("//div[@class=\"tab-content\"]");
//dataBlock = doc.DocumentNode.SelectSingleNode("//div[@class=\"tab-pane@in@active\"]");
foreach (var item in dataBlock.SelectNodes("//div[@class=\"nav-tabs-custom\"]"))
{
Console.Write( item.InnerHtml + "\n"); /*показываем в консоли содержимое дива*/
System.IO.File.WriteAllText(@"D:\Text.txt", item.InnerHtml + "\n");
}
}
Console.Write("Done!");
Console.ReadKey();
Код внаглую скопипастен с инета,
но есть вопросы.
Первое - можно ли как то открывать страницы в вэб-обозревателе самой Visual Studio (а то используя Мозиллу код сначало делает перезапуск, а после завершения парсинга закрывает браузер).
Второе - организовать парсинг всех 30 предметов одновременно.
Третье - получить данные сразу с нужного блока а не загружать всю страницу и в ней уже рыскать. В исходнике страницы первые 300 строк просто не нужны мне но их тоже приходится "скачивать" (не парсить).
Код внаглую скопипастен с инета,
но есть вопросы.
Первое - можно ли как то открывать страницы в вэб-обозревателе самой Visual Studio (а то используя Мозиллу код сначало делает перезапуск, а после завершения парсинга закрывает браузер).
Второе - организовать парсинг всех 30 предметов одновременно.
Третье - получить данные сразу с нужного блока а не загружать всю страницу и в ней уже рыскать. В исходнике страницы первые 300 строк просто не нужны мне но их тоже приходится "скачивать" (не парсить).
1. Не понял, просто Ctrl + U и смотрите исходный код страницы
2. А в чём сложность? Предметы ведь структурированы на странице
3. Нельзя, можно ограничить загрузку конца, но не начала
А вообще советую не заморачиваться с div-ами браузерами, а написать свой парсер который на входе получает исходный код и гораздо быстрее и логичнее вытянет данные.
Если во входных данных есть html тэги, не значит что мы должны в них заходить.
Например если есть
Нам не нужно пытаться спарсить div-ы, чтобы получить Test1/2/3, мы знаем что они располагаются в единственном экземпляре и найти их можно проверив строку на наличие <a aName, а дальше разбираем строку и тащим что-надо.
________________
We are Ducks. We are birds. We like bread. We cryack. Cryack.
Последний раз редактировалось Nickitee; 25.01.2017 в 05:43.