Форма получения URL - PullRequest
       6

Форма получения URL

0 голосов
/ 04 августа 2020

Команда

Мой вопрос: как заставить VBA захватывать только «список URL-ссылок href»?

Вот мой код

Set Attach = Dr.FindElementsByXPath("//[@id='Order']")
Set aList = Dr.FindElementsByCss("#Order [title]")
X = 1 to 10
With Sheet2
            For i = 1 To X
            Sheet2.Cells(Lrow,1) = aList.item(i).Text
            Lrow = Lrow + 1
        Next
End With
Next
' do some stuff

End Sub
<div class="attachments-files-list" id="Order">
    
    <div class="link">
        <a href="#" class="btn btn-default" data-bind="click : downloadAttachments, visible: $root.attachmentsViewModel.attachments().length > 0">
            Click  <strong data-bind="text:$root.attachmentsViewModel.attachments().length">2</strong> Links
        </a>
    </div>

    <div class="link">
        <a href="#" class="js-app-action-el" data-bind="click: $root.attachmentsViewModel.showDeleteAttachmentDialog">
        </a>
        <a href="https://URL/attachmentId=201803%2f93b14b2a-1c10-40f6-a3f6-0e83eea67bf2-check_out_2018.03.09_22%3a16%3a53.jpg&amp;overridefilename=check_out_2018.03.09_22%3a16%3a53.jpg&amp;overrideFileName=check_out_2018.03.09_22%3a16%3a53.jpg" class="js-app-action-el" data-bind="text:fileName, attr: { href: url, title: description }, style: { 'padding-left': $parent.isOutsourced() ? 30 : 0 }" target="_blank" title="check_out_2018.03.09_22:16:53.jpg" style="padding-left: 0px;">
            order_found.jpg
        </a>
    </div>
        </div>

Сообщите мне, если потребуется дополнительная информация. Спасибо за помощь!

1 Ответ

0 голосов
/ 04 августа 2020

Вы можете получить атрибуты напрямую, используя методы xpath,

Решение № 1:

Set aList = Dr.FindElementsByXPath("//a[@class='js-app-action-el' and contains(@title,'jpg')]/@href")
X = Dr.FindElementByXPath("//strong[@data-bind='text:$root.attachmentsViewModel.attachments().length'][1]").Text
With Sheet2
       Lr = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row + 1
       For i = 1 To X
            Sheet2.Cells(Lr, 1) = aList.item(i)
            Lr = Lr + 1
        Next
End With
Next

Это должно вернуть два значения, которые вы можете обработать, однако соответствует вашим потребностям,

Attribute='href=https://URL/Documents/GetTempLink?attachmentId=201803%2f93b14b2a-1c10-40f6-a3f6-0e83eea67bf2-check_out_2018.03.09_22%3a16%3a53.jpg&overridefilename=check_out_2018.03.09_22%3a16%3a53.jpg&overrideFileName=check_out_2018.03.09_22%3a16%3a53.jpg'
Attribute='href=https://URL/Documents/GetTempLink?attachmentId=201803%2fa21245ab-dd7f-4da0-bb31-d308f935527e-check_out_2018.03.09_22%3a15%3a47.jpg&overridefilename=check_out_2018.03.09_22%3a15%3a47.jpg&overrideFileName=check_out_2018.03.09_22%3a15%3a47.jpg'

Решение № 2: используйте метод getAttribute

Set aList = Dr.FindElementsByCss("#OrderAttached [title]")
X = Dr.FindElementByXPath("//strong[@data-bind='text:$root.attachmentsViewModel.attachments().length'][1]").Text
With Sheet2
       Lr = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row + 1
       For i = 1 To X
            Sheet2.Cells(Lr, 1) = aList.item(i).getAttribute("href")
            Lr = Lr + 1
        Next
End With
Next
...