2017-01-05 4 views
-3

Мое намерение - очистить все имя приложения от этой страницы и ссылку на приложение, ведущую на следующую страницу. Тем не менее, когда я запускаю его, я вижу, что после цикла один раз он выдает следующую ошибку: «Ошибка времени выполнения 91, объектная переменная или переменная блока не установлена». Вот полный код. Любая помощь будет действительно оценена. Заранее спасибо.Ошибка времени выполнения 91, переменная объекта или с переменной блока не установлена ​​

Sub app_crawler() 
    Dim xmlpage As New XMLHTTP60, htmldoc As New HTMLDocument 
    Dim htmlas As Object, htmla As Object, sstr As String 

    xmlpage.Open "GET", "https://itunes.apple.com/us/app/candy-crush-saga/id553834731?mt=8", False 
    xmlpage.send 
    htmldoc.body.innerHTML = xmlpage.responseText 

    For Each htmlas In htmldoc.getElementsByClassName("lockup-info")(0).getElementsByTagName("a") 
     sstr = htmlas.href 

     xmlpage.Open "GET", sstr, False 
     xmlpage.send 
     htmldoc.body.innerHTML = xmlpage.responseText 

     For Each htmla In htmldoc.getElementsByClassName("intro")(1).getElementsByTagName("h1") 
      x = x + 1: Cells(x, 1) = htmla.innerText 
     Next htmla 
    Next htmlas 
End Sub 
+0

На какой линии вы получаете сообщение об ошибке? – Vityata

+1

* Я просто скопировал полный код и вставил сюда, чтобы избежать путаницы, что я прошу * - к сожалению, вы в основном дали нам процедуру и сказали, что «это не работает», не указывая нам, где именно может быть проблема , или продемонстрировать какие-либо усилия с вашей стороны, чтобы попытаться изолировать проблему до одной конкретной инструкции. Можете ли вы попытаться это сделать и изменить свой вопрос? –

+1

Вам нужно ** [редактировать] ** эту информацию * в свой вопрос *. –

ответ

0

Это ответ, который фиксирует все проблемы, которые у меня были:

Sub app_crawler() 
    Dim http As New XMLHTTP60, hdoc As New HTMLDocument, hdoc_one As New HTMLDocument 
    Dim elem As Object, post As Object, sstr As String 

    With http 
     .Open "GET", "https://itunes.apple.com/us/app/candy-crush-saga/id553834731?mt=8", False 
     .send 
     hdoc.body.innerHTML = .responseText 
    End With 

    For Each elem In hdoc.getElementsByClassName("lockup-info") 
     With elem.getElementsByTagName("li")(0).getElementsByTagName("a") 
      If .Length Then sstr = .Item(0).href 
     End With 
     With http 
      .Open "GET", sstr, False 
      .send 
      hdoc_one.body.innerHTML = .responseText 
     End With 

     For Each post In hdoc_one.getElementsByClassName("intro") 
      With post.getElementsByTagName("h1") 
       If .Length Then i = i + 1: Cells(i, 1) = .Item(0).innerText 
      End With 
     Next post 
    Next elem 
End Sub 
1

Как Mat's Mugcommented, вы должны проверить, если htmlas(x) возвращает Nothing перед тем, как элементы из него, и то же самое относится к getElementByTagName и другие:

Sub TestSth() 
    Dim xmlpage As New MSXML2.XMLHTTP60 
    Dim htmldoc As New MSHTML.HTMLDocument 
    Dim htmlas As Object, gist As Object 
    Dim htmla As Object, main As Object, lux As String 
    Dim x As Long, link As Object, thank As Object 
    Range("A1").Select 
    xmlpage.Open "GET", "https://itunes.apple.com/us/app/candy-crush-saga/id553834731?mt=8", False 
    xmlpage.send 
    htmldoc.body.innerHTML = xmlpage.responseText 
    Set xmlpage = Nothing 

    Set htmlas = htmldoc.getElementsByClassName("lockup-info") 
    For x = 0 To htmlas.Length - IIf(htmlas.Length > 0, 1, 0) 
    If Not htmlas(x) Is Nothing Then 
     If Not htmlas(x).getElementsByTagName("a") Is Nothing Then 
     If Not htmlas(x).getElementsByTagName("a")(0) Is Nothing Then 
      lux = htmlas(x).getElementsByTagName("a")(0).getAttribute("href") 
      If lux <> "" Then 
      xmlpage.Open "GET", lux, False 
      xmlpage.send 
      htmldoc.body.innerHTML = xmlpage.responseText 

      Set main = htmldoc.getElementsByClassName("intro")(1) 
      Set thank = main.getElementsByTagName("div") 
      For Each link In thank 
       ActiveCell.Value = link.innertext 
       ActiveCell.Offset(1, 0).Select 
      Next link 
      End If 
     End If 
     End If 
    End If 
    Next x 
End Sub 
+0

Спасибо за ваши усилия, но он не тянет все данные, которые он должен. Я уже решил проблему вчера вечером. Вот что я ожидал: – SIM

 Смежные вопросы

  • Нет связанных вопросов^_^