импортировать данные из сети

Мое требование состоит в том, чтобы получить «дату создания» / «дату изменения» набора данных на веб-странице в файл .xls или .csv.

URL-адрес: https://data.medicare.gov/Hospital-Compare/Agency-For-Healthcare-Research-And-Quality-Nationa/sdhm-um6i/about

С этой веб-страницы я хотел бы импортировать дату создания, которую вы можете увидеть справа, используя задачу сценария в SSIS.

Я попытался использовать данные Excel -> импортировать из Интернета. Это не работает!

Было бы очень полезно, если у кого-то есть какие-либо предложения по этому поводу.

Спасибо


person SSISqueries    schedule 09.10.2013    source источник
comment
Пожалуйста, рассмотрите возможность объяснения того, что содержит веб-страница, вместо ссылки на нее (когда-нибудь могут появиться мертвые ссылки!)   -  person Simon    schedule 09.10.2013
comment
Веб-страница представляет собой страницу о, она содержит все данные, связанные с набором данных, такие как описание, автор, дата создания, обновленные данные, теги и т. д. Я хотел бы получить дату создания с этой страницы.   -  person SSISqueries    schedule 09.10.2013


Ответы (1)


В SSIS нет ничего родного для анализа веб-страниц, подобных этому. Тем не менее, я надеюсь, вам нравится кодирование .NET.

Я сделал что-то подобное с Html Agility Pack. Изучите их документацию и примеры, чтобы понять основы того, как анализировать HTML с их библиотекой.

После того, как вы определились с этим, достаточно просто определить путь к нужному элементу (элементам). Я нашел лучший способ открыть страницу в Chrome, щелкнуть правой кнопкой мыши интересующую вещь и выбрать «Проверить элемент». Расширяйте поля, пока не дойдете до того, что вам нужно, а затем щелкните правой кнопкой мыши в окне инспектора и выберите Copy XPath.

введите здесь описание изображения

Это приводит к следующему селектору xpath

//*[@id="aboutSection"]/div/div/div/div[1]/p[1]/span/span

Затем я бы использовал его в коде, например

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(this.html);
string createDate = string.Empty;
createDate = doc.DocumentNode.SelectSingleNode("//*[@id="aboutSection"]/div/div/div/div[1]/p[1]/span/span").InnerText.Trim();

Вам нужно будет повозиться с точной механикой вызова SelectSingleNode, но это общая концепция. Вы также можете заметить, что у вас есть атрибут data-rawdatetime со значением. Я предполагаю, что это дата эпохи, но если вы можете перевести это в представленное значение «20 октября 2011 г.», вам может быть лучше, поскольку это числовое значение не будет зависеть от региональных настроек.

person billinkc    schedule 09.10.2013
comment
Спасибо ! Ваш ответ определенно пролил свет на то, как действовать дальше. Я попытался использовать Dim src As String =system.net.DownloadString("URL"), чтобы получить исходный код в строку, а затем, используя строковые функции, я мог получить желаемый результат. - person SSISqueries; 10.10.2013