VBA парсинг и импорт в столбец excel

Узнай цену своей работы

Формулировка задачи:

Всем привет. Решил сделать парсинг сайта: https://2gis.ru/ekaterinburg/rubrics На данный момент реализовал простой вариант: Записываю в Textbox название рубрики, он открывает сайт, подставляет значение и нажимает кнопку поиск. ТУт я бы хотел автоматизовать работу, чтоб он изначально предлогал мне в виде выпадающего текста выбрать список рубрик (Combobox1), а в поле подрубрик (Combobox2) подгружались подрубрики Решил поступить так: Спарсить страницу, взять значение всех тегов стоящих между (не получается): <a class="link _scheme_none rubricsList__listItemLinkTitle"> и </a> Занести их в столбец (например начиная с B1), ну а потом при клике на Combobox1 выйдет список данных элементов (Это я знаю как реализовать) Вопрос помогите реализовать: взять значение всех тегов стоящих между (https://2gis.ru/ekaterinburg/rubrics): <a class="link _scheme_none rubricsList__listItemLinkTitle"> и </a> Занести их в столбец (например начиная с B1),

Решение задачи: «VBA парсинг и импорт в столбец excel»

textual
Листинг программы
  1. Const mUrl As String = "https://2gis.ru"
  2. Const rUrl As String = "https://2gis.ru/ekaterinburg/rubrics"
  3. Const srUrl As String = "https://2gis.ru/ekaterinburg/subrubrics/"
  4.  
  5. Sub uuu()
  6.     Dim a()
  7. '------------
  8.    a = GetRubrics(rUrl)
  9. End Sub
  10.  
  11. Function GetRubrics(ByVal url As String) As Variant
  12.     Dim a()
  13.     Dim i&
  14.     Dim t_li, t_a
  15. '---------------------
  16.    Set sd = CreateObject("Scripting.Dictionary")
  17.     With CreateObject("HtmlFile")
  18.         .Body.innerHTML = GetHtml(url)
  19.         For Each t_li In .GetElementsByTagName("li")
  20.             If t_li.ClassName = "rubricsList__listItem" Then
  21.                 i = i + 1
  22.                 ReDim Preserve a(1 To 3, 1 To i)
  23.                 a(1, i) = t_li.GetAttribute("data-name")
  24.                 a(2, i) = t_li.GetAttribute("data-id")
  25.                 a(3, i) = srUrl & a(2, i)
  26.             End If
  27.         Next
  28.     End With
  29.     GetRubrics = Application.Transpose(a)
  30. End Function
  31.  
  32. Function GetHtml(ByVal url As String) As String
  33.     With CreateObject("msxml2.xmlhttp")
  34.         .Open "GET", url, False
  35.         .send
  36.         Do: DoEvents: Loop Until .ReadyState = 4
  37.         GetHtml = .responsetext
  38.     End With
  39. End Function

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы