добрый день.
необходимо подредактировать макрос, чтобы он вытягивал ссылки на все картинки из определенного контейнера html
код html (тэг "а" с атрибутом "data-fancybox-group" ) - <a data-fancybox-group...>
если такого контейнера нет, то другие ссылки на картинки не извлекать.
и возможно ли если таких контейнеров 2 и более, то из каждого вытянуть ссылку на картинку и поместить в одну ячейку через запятую ","
сейчас макрос вытягивает только первую ссылку на картинку по шаблону, но такой шаблон присутствует и в не нужном контейнере
Скрытый текст |
---|
Код |
---|
Sub Avtolev() 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") = "нет картинки"
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 = "\/\/pubimg\.4mycar[^\w].*jpeg"
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 |
|
насколько я понимаю в функцию "dann" нужно добавить еще один паттерн ("<a data-fancybox-group ") и сделать вложенные условия через цикл (по количеству найденных контейнеров).
что то вроде следующего
Скрытый текст |
---|
Function dann(t As String) Dim REGEXP2 As Object Set REGEXP2 = CreateObject("VBScript.RegExp") REGEXP.IgnoreCase = True REGEXP.Global = False REGEXP.MultiLine = True REGEXP2.Pattern = "<a data-fancybox-group"
Dim REGEXP As Object Set REGEXP = CreateObject("VBScript.RegExp") REGEXP.IgnoreCase = True REGEXP.Global = False REGEXP.MultiLine = True REGEXP.Pattern = "\/\/pubimg\.4mycar[^\w].*jpeg"
For InStr(1, txt, REGEXP2) If REGEXP2.Test(t) Then If REGEXP.Test(t) Then dann = REGEXP.Execute(t)(0) End If End If Next End Function |