Используйте HTML Agility Pack для извлечения динамического содержимого

c# html-agility-pack

Вопрос

Предположим, что у меня есть список из 10 источников новостей, которые мне нравится импортировать в мою локальную базу данных. Мне нужно открыть каждую из этих внешних страниц новостей, извлечь основной контент и сохранить его. Структура html на всех этих страницах отличается. Некоторые используют div, а другие теги статьи использования.

Я знаю, что я могу использовать объект HttpWebRequest для открытия страницы и использовать HtmlAgilityPack для загрузки документа [HTML].

HttpWebRequest oReq = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse resp = (HttpWebResponse)oReq.GetResponse();
var doc = new HtmlAgilityPack.HtmlDocument();
doc.Load(resp.GetResponseStream());

Тем не менее, я не знаю, как настроить таргетинг на основной элемент, не зная тип.

Является ли то, что я пытаюсь сделать, даже возможно?

Популярные ответы

HTML Agility Pack ОСОБЕННО полезен, но используемый код обычно должен быть настроен для структуры сайта.

Вы можете попробовать быть универсальным и адаптивным, но даже у «Big Boys», таких как Evernote, должны быть разные варианты отсечения для разных макетов сайта.

Первое, на что я бы посмотрел: если это новость, вы должны использовать свои RSS-каналы? (Не только технически, но и юридически. Ознакомьтесь с разделами условий обслуживания сайтов).

Если вам нужно разобрать свой сайт, я бы предложил создать интерфейс и отдельный класс для каждого сайта, который реализует интерфейс. Подстройте каждый класс, чтобы он соответствовал структуре соответствующего сайта.



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow