Nano Hash - криптовалюты, майнинг, программирование

Веб-парсинг - StockCharts - getElementsByTagName (a)

Я пытаюсь получить внутренний текст и атрибут href имени столбца на этом веб-сайте:

https://stockcharts.com/freecharts/sectorsummary.html?&G=SECTOR_DJUSNS&O=1

но я получаю все гиперссылки, кроме тех, что находятся внутри таблицы.

Может кто-нибудь взглянуть на этот код и сообщить, что не так?

Sub Scraping_StockCharts()

    Dim XMLPage As New MSXML2.XMLHTTP60
    Dim HTMLDoc As New MSHTML.HTMLDocument
    Dim HTMLIm As MSHTML.IHTMLElement
    Dim HTMLIms As MSHTML.IHTMLElementCollection
    Dim URL As String
    
    URL = "https://stockcharts.com/freecharts/sectorsummary.html?&G=SECTOR_DJUSNS&O=1"
    
    XMLPage.Open "Get", URL, False
    XMLPage.setRequestHeader "Content-Type", "text/xml"
    
    XMLPage.send
    
    HTMLDoc.body.innerHTML = XMLPage.responseText

    Row = 1
    
    Set HTMLIms = HTMLDoc.getElementsByTagName("a")
        
    For Each HTMLIm In HTMLIms
        
        Sheets("Results").Cells(Row, 2).Value = HTMLIm.innerText
        Sheets("Results").Cells(Row, 3).Value = HTMLIm.getAttribute("href")
        Row = Row + 1
        
    Next HTMLIm

End Sub

Ответы:


1

Очистка через xmlhttp запрещена. Не уверен в автоматизации браузера. Вам нужно будет внимательно прочитать условия обслуживания. Я подозреваю, что с автоматизацией браузера вы могли бы просто использовать URL-адрес, который у вас есть.

С интеллектуальной точки зрения данные могут быть получены из https://c.stockcharts.com/j-sum/sum?cmd=perf&group=SECTOR_DJUSNS, который вернет JSON. Из этого json вы можете восстановить URL-адрес, получив доступ к значению sym для каждого словаря в списке возвращенных словарей. Объедините это значение sym с концом базовой строки https://stockcharts.com/h-sc/ui?s=

например для первого словаря в списке

https://stockcharts.com/h-sc/ui?s=   + sym 

дает

https://stockcharts.com/h-sc/ui?s=TKAT

По сути, сервер ожидает строку запроса и возвращает json. Страница использует это для обновления содержимого. Это можно увидеть на вкладке сети браузера при обновлении страницы.

Возможно, вам лучше поискать бесплатный API, который обслуживает аналогичные данные.

26.08.2020
  • Большое спасибо за вашу помощь и информацию QHarr. Я попытаюсь получить данные из файлов JSON через Power Query или R. Не могли бы вы сообщить мне, где вы взяли этот URL? c.stockcharts.com/j-sum/sum?cmd=perf&group= SECTOR_DJUSNS 27.08.2020
  • Это из вкладки сети, но вам может быть разрешен доступ к данным только через браузер в соответствии с положениями и условиями. 27.08.2020
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..