powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Картинки с сайта - по артикулам
9 сообщений из 9, страница 1 из 1
Картинки с сайта - по артикулам
    #39837127
LeCrunch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, какая есть возможность получать пути к картинкам на сайте , по перечню артикулов, для имеющегося макроса по их дальнейшей вставки в таблицу?
Пример артикул 816002 - https://buroshop.ru/product/816002

Картинка - малая:
https://buroshop.ru/upload/resize_cache/iblock/ d6b/340_340_140cd750bba9870f18aada2478b24840a/ 816002 _v01_b.jpg
большая:
https://buroshop.ru/upload/iblock/ d6b/ 816002 _v01_b.jpg

Интересует, как клиентом получать(узнавать) переменные(выделены цветом) части URL, для их последующей генерации?
...
Рейтинг: 0 / 0
Картинки с сайта - по артикулам
    #39837480
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeCrunch,

Качнуть всю страницу и найти в ней URL c вхождением 816002.
...
Рейтинг: 0 / 0
Картинки с сайта - по артикулам
    #39838537
LeCrunch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
big-duke,
Т.е. не открывать каждую веб-страницу, а парсить? Как это правильно делается?

(Просто до этого другой поставщик был, там до таких таких сложностей не доходило...)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
Option Explicit
' contextures.com/xlcomments03.html

Public Sub Komus_Article_Pics()
    
    Dim rng As Range
    Dim lArt As Long
    Dim sPict, sPict2 As String
    Dim att As VbMsgBoxResult

'    Application.ScreenUpdating = False

'    ЦИКЛ - работа с выделенным диапазоном
    For Each rng In Selection

'        Проверка корректности выделения
        On Error Resume Next
            lArt = Application.WorksheetFunction.Clean(Trim(rng.Value))
            If Err = 13 Then    ' "Несоответствие типа"
                att = MsgBox(prompt:="Выделять только №№ артикулов!", _
                        Buttons:=vbCritical, _
                        Title:="Комус")
                Exit Sub
            End If
        On Error GoTo 0
    
'        для отладки, удаление уже существующих комментариев
        If Not rng.Comment Is Nothing Then
            rng.Comment.Delete
        End If
        
        sPict = "http://www.komus.ru/photo/normal/" & lArt & "_1.jpg"
        sPict2 = "http://www.komus.ru/photo/normal/!" & lArt & "_1.jpg"
        
'        фото - комментарий
        With rng.AddComment
            .Visible = False
            .Text "" & lArt
'            .Text "№ " & lArt & Chr(10) & _
'                Left(rng.Offset(rowOffset:=0, columnOffset:=1).Value, 25)
            
            With .Shape
                With .Fill
                    .ForeColor.RGB = RGB(255, 255, 255) 'белый
                    .Transparency = 0#  ' непрозрачный

'                обработка ошибочных №№ !артикулов...
                    On Error Resume Next
                        .UserPicture sPict
                        If Err = 7 Then ' "Не хватает памяти"
                            sPict = sPict2
'                            пометка серым проблемных артикулов
                            rng.Interior.Color = RGB(192, 192, 192)
                            .UserPicture sPict
                        End If
                    On Error GoTo 0
                End With
                
                With .TextFrame.Characters.Font
                    .Name = "Arial Narrow"
                    .Size = 10
                    .Bold = True
                    .ColorIndex = 1 ' чёрный - 1, синий - 5
                End With
                
                .ScaleWidth 1, msoFalse, msoScaleFromTopLeft
                .ScaleHeight 2, msoFalse, msoScaleFromTopLeft
            End With
            
            .Shape.Height = 150     ' для экранного масштаба 96 т/д
            .Shape.Width = 150
'            .Shape.Height = 120    ' для экранного масштаба 120 т/д
'            .Shape.Width = 120

        End With
    
'        добавление гипессылок в артикулы
        rng.Hyperlinks.Add Anchor:=rng, Address:= _
        "http://www.komus.ru/item.php?itemID=" & lArt
    
    Next rng

'    Application.ScreenUpdating = True

End Sub

...
Рейтинг: 0 / 0
Картинки с сайта - по артикулам
    #39838973
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Картинки с сайта - по артикулам
    #39845485
LeCrunch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел в предложенной теме хороший пример и набросал черновик (пока по одному артикулу):
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
Option Explicit
' 
' Tools -> References:
' Microsoft XML, v6.0
' Microsoft HTML Object Library

Sub BuroShop()
   
    Dim xmlHttpReq As MSXML2.XMLHTTP60
    Dim doc As MSHTML.HTMLDocument
    Dim elem As MSHTML.HTMLHtmlElement
    Dim node As MSHTML.HTMLHtmlElement
   
    Set xmlHttpReq = New MSXML2.XMLHTTP60
   
    With xmlHttpReq
        .Open "GET", "https://buroshop.ru/search/?q=701009", False
        .send
   
        If .readyState = 4 And .Status = 200 Then
            Set doc = New MSHTML.HTMLDocument
            doc.body.innerHTML = .responseText
            Set elem = doc.querySelector("img.b-product__image")
            For Each node In elem.ChildNodes
                Debug.Print node.innerText
            Next
        Else
            MsgBox "Error" & vbNewLine & "Ready State: " & _
                .readyState & vbNewLine & "Status: " & .Status
        End If
   
    End With
 
End Sub



Но - как получить требуемый адрес картинки img src="/upload/resize_cache/iblock/486/212_146_1/474095_v01_b.jpg ?...
Есть подсказки из Python, но как их ввести в VBA?...
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
    r = requests.get("https://buroshop.ru/search/?q=701009")
    tree = lxml.html.fromstring(r.text)
    sel = CSSSelector('img.b-product__image')
    results = sel(tree)

    # IMAGE LINK
    print(results[0].get('src'))
...
Рейтинг: 0 / 0
Картинки с сайта - по артикулам
    #39845602
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeCrunch,

сначала getElementsByTagName , потом outerhtml и instr.
...
Рейтинг: 0 / 0
Картинки с сайта - по артикулам
    #39846347
LeCrunch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Опытного коллегу спросил и всё оказалось проще - атрибут src!
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
Option Explicit
' https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1314633&msg=21926174
' Tools -> References:
' Microsoft XML, v6.0
' Microsoft HTML Object Library

Public Sub BuroShop()
   
    Dim xmlHttpReq As MSXML2.XMLHTTP60
    Dim doc As MSHTML.HTMLDocument
    Dim elem As MSHTML.HTMLHtmlElement
    Dim node As MSHTML.HTMLHtmlElement
   
    Set xmlHttpReq = New MSXML2.XMLHTTP60
   
    With xmlHttpReq
        .Open "GET", "https://buroshop.ru/search/?q=701009", False
        .send
        
        If .readyState = 4 And .Status = 200 Then
            Set doc = New MSHTML.HTMLDocument
            doc.body.innerHTML = .responseText
            Set elem = doc.querySelector("img.b-product__image")
            Debug.Print "https://buroshop.ru" + Split(elem.src, ":")(1)
        Else
            MsgBox "Error" & vbNewLine & "Ready State: " & _
                .readyState & vbNewLine & "Status: " & .Status
        End If
   
    End With
 
End Sub


Теперь легко поправлю свой предыдущий макрос :)
...
Рейтинг: 0 / 0
Картинки с сайта - по артикулам
    #39846380
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeCrunch,

я бы еще
Код: vbnet
1.
Set elem = doc.querySelector("img.b-product__image") 

обернул в On Error или добавил проверку Is Nothing.
На случай если структура сайта изменится
...
Рейтинг: 0 / 0
Картинки с сайта - по артикулам
    #39848342
LeCrunch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Обнаружилась проблемка с самими примечаниями.
У предыдущего поставщика картинки располагались на холсте одного и того же размера, 200*200 например , при этом и размеры примечаний были одинаковы.
У нового - они разные, в зависимости от формы предмета (т.е. фиксированного холста нет), типа - узкий , широкий , соответственно деформируясь...(

Нашел пример получения размеров исходного изображения с использованием функции LoadPicture, однако похоже это работает только с сохраненными картинками, а он-лайн не хочет...

Или есть еще варианты?
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Картинки с сайта - по артикулам
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]