Загрузка Javascript BLOB из холста в PDF с помощью веб-сканера Excel VBA - PullRequest
0 голосов
/ 15 сентября 2018

Я пытаюсь автоматически загружать PDF-файлы через VBA, мне уже удалось автоматически перейти на многие URL-адреса и извлечь текст из html с помощью метода CSS Selector querySelectorAll() и сохранить его в моей электронной таблице Excel через VBA.

Я также могу нажимать кнопки javascript и вообще знаю, как загружать файлы PDF, но, похоже, он не работает с файлами PDF с веб-сайта, над которым я работаю. Похоже, что файлы PDF не существуют на серверах, а существуют только как BLOB (например, blob: null / 7cea2352-704e-42e2-9da7-2b65082134bb) и конвертируются в PDF на лету через некоторый код JavaScript, когда я нажимаю вручную на кнопке «скачать PDF» во встроенном окне предварительного просмотра PDF Firefox.

Есть ли способ получить доступ к этим BLOB-файлам через vba и преобразовать их в файлы, чтобы автоматически загружать их, как обычные PDF-файлы? Я просматривал несколько уроков / отвечал на вопросы, но они так и не показали, как это сделать с помощью vba, но всегда только через javascript.

Мой код (соответствующая часть):

Sub vbaCrawler()

Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True

IE.Navigate "websiteURL.com"

While IE.Busy Or IE.readyState < 4: DoEvents: Wend

t = Timer
counterX = 1
counterY = 1

Do
    DoEvents
    On Error Resume Next
    Set aNodeList = IE.document.querySelectorAll("#productPartSearchResult td")
    On Error GoTo 0
    If Timer - t = 10 Then Exit Do

    Loop While aNodeList Is Nothing
        If Not aNodeList Is Nothing Then
            For j = 18 To aNodeList.Length - 1
                Worksheets("CurrentStep").Cells(counterY, counterX).Value = aNodeList.Item(j).innerText

                If counterX < 9 Then
                counterX = counterX + 1
                Else
                counterX = 1
                counterY = counterY + 1
                End If
            Next j
        End If
//[...] bunch of code to format the text data

IE.Quit
Set IE = Nothing

End Sub

Я мог бы указать Excel на холст, содержащий файл BLOB, но я не знаю, как оттуда понять, чтобы Excel понял, что этот холст на самом деле содержит файл, который следует загрузить:

(Снимок экрана) большая белая картинка - это BLOB / PDF, который я пытаюсь загрузить, соответствующий холст помечен синим цветом с правой стороны

Вот скриншот, показывающий, что произойдет, если я щелкну правой кнопкой мыши изображение, которое пытаюсь загрузить, чтобы просмотреть его в браузере:

URL-адрес снимка экрана blob

Я надеялся на URL пути к файлу, чтобы я мог загрузить это изображение, но он просто показывает URL-адрес BLOB-объекта без какого-либо расширения .png или .pdf, что затрудняет мне работу с ним. Как я могу загрузить этот файл, если он не показывает путь к файлу, а только этот URL-адрес большого двоичного объекта?

И как я могу получить этот URL-адрес BLOB-объекта через VBA? сейчас я знаю, как добраться до него вручную, щелкнув правой кнопкой мыши изображение, но не могу найти URL-адрес большого двоичного объекта в исходном коде html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...