Страницы: 1
RSS
Извлечение ссылок со страницы
 
Добрый день

пытаюсь вытянуть ссылки со страницы. но видимо неправильно написал шаблон
по разному пробовал, но все равно не проходит проверку вхождения
на ресурсе regex101.com регулярки правильно находили данные

подскажите где я делаю неправльно?

строчка из кода страницы
Код
<td class='t-ac nowrap'><a target='_blank' href='/goods/akd0069/akyoto/id37525751'><i class='r0'></i><span class='s1'></span></a>


Код
Sub OneHref()
    Dim t$, URL$, i As Long
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        URL = URLEncode(Cells(i, "F"))
    With CreateObject("msxml2.xmlhttp")
        .Open "GET", URL, False
        .send
        Do: DoEvents: Loop Until .readyState = 4
        t = .responseText
        Cells(i, "G") = dann(t)
        If Cells(i, "G") = "" Then
           Cells(i, "G") = "not href"
        End If
    End With
    Next
End Sub
Function dann(t As String)
     Dim RegExp As Object
     Set RegExp = CreateObject("VBScript.RegExp")
     RegExp.IgnoreCase = True
     RegExp.Global = False
     RegExp.MultiLine = True
     RegExp.Pattern = "<a target=""_blank"" href=""(.*?)"">"
     If RegExp.Test(t) Then
        dann = RegExp.Execute(t)(0)
     End If
End Function
Function URLEncode(ByVal txt As String) As String
    For i = 1 To Len(txt)
        l = Mid(txt, i, 1)
        Select Case AscW(l)
            Case Is > 4095: t = "%" & Hex(AscW(l) \ 64 \ 64 + 224) & "%" & Hex(AscW(l) \ 64) & "%" & Hex(8 * 16 + AscW(l) Mod 64)
            Case Is > 127: t = "%" & Hex(AscW(l) \ 64 + 192) & "%" & Hex(8 * 16 + AscW(l) Mod 64)
            Case 32: t = "%20"
            Case Else: t = l
        End Select
        URLEncode = URLEncode & t
    Next
End Function
 
Lex396, добрый день.
Из html кода я вижу одинарные кавычки, в шаблоне двойные - уточните этот момент.
 
Цитата
Oleg Boyaroff написал:
Lex396 , добрый день.Из html кода я вижу одинарные кавычки, в шаблоне двойные - уточните этот момент.

Oleg Boyaroff, спасибо за подсказку с одинарными ковычками, видимо глаз уже замылился
но, первые несколько строчек отрабатывает нормально, с 7 строчки соответствий не находит, хотя если смотреть в ручную код такой же

думал что идет блокировка из за частых вызовов, но после добавления задержки выполнения маркоса, ситуация не изменилась.
вставил
Application.Wait Now + TimeSerial(0, 0, 5)
после запуска цикла в теле макроса

в чем может быть проблема, почему функция не находит вхождение?
 
Цитата
Lex396 написал:
с 7 строчки соответствий не находит, хотя если смотреть в ручную код такой же
Как вы смотрите код? Вот именно по ссылке с 7 строки нет таких данных по шаблону.
 
ссори, виноват. говорю же глаз замылился

8 строчка
Код
<a target="_blank" href="/Catalog/TecDoc/Index?idArticle=21450203">

9 строчка
Код
<a target="_blank" href="/Catalog/TecDoc/Index?idArticle=21450203">


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

вот какую ссылку получаю если парсить страницу через эксель
Код
'/goods/01335/asam/id45064320" >


а вот какую ссылку вижу если смотреть через браузер исходный код страницы
Код
href="/Catalog/TecDoc/Index?idArticle=21450203">


так же в коде разные кавычки
 
Доброе время суток.
Вариант
Страницы: 1
Наверх