Как убрать кавычки после очистки веб-страниц с помощью VBA - PullRequest
0 голосов
/ 17 декабря 2018

Я запускаю очистку веб-страницы и замечаю следующее при копировании ячеек.

"
In stock
"
"
4 to 10 bus days
"
"
4 to 10 bus days
"
"
4 to 10 bus days
"

Я пытался удалить их вместе с дополнительной CR LF, чтобы получить следующее

In stock
4 to 10 bus days
4 to 10 bus days
4 to 10 bus days

Я попробовал следующее, которые не работают

Set availability = ie.Document.querySelector(".product-section")
Dim arr() As String
arr = Split(Replace(Trim(availability.innerText), Chr(34), ""), ":")
wks.Cells(i, "D").Value = (arr(UBound(arr)))

Set availability = ie.Document.querySelector(".product-section")
Dim arr() As String
arr = Split(Replace(Trim(availability.innerText), """", ""), ":")
wks.Cells(i, "D").Value = (arr(UBound(arr)))

Set availability = ie.Document.querySelector(".product-section")
Dim arr() As String
arr = Split(Trim(availability.innerText), ":")
wks.Cells(i, "D").Value = (arr(UBound(arr)))

Это имеет отношение к веб-странице?другие веб-страницы имеют нормальный вывод?

Как я могу это исправить?

Первый URL-адрес https://www.overshop.gr/index.php?route=product/product&product_id=11684 и https://www.overshop.gr/index.php?route=product/product&product_id=1485, в котором написано In Stock

1 Ответ

0 голосов
/ 18 декабря 2018

В этом случае лучше использовать прямой селектор, но поскольку для некоторых ссылок, где нет в наличии, второй класс меняется на .prod-stock-out, вам нужно проверить, чтобы определить, какой селектор класса потомка использовать.

CSS:

.product-section .prod-stock

VBA:

ie.document.querySelector(".product-section .prod-stock").innerText

Option Explicit
Public Sub GetInfo()
    Dim ie As New InternetExplorer, wks As Worksheet
    Dim j As Long, urls()
    Set wks = ThisWorkbook.Worksheets("Sheet1")
    urls = Application.Transpose(wks.Range("A1:A2").Value)
    With ie
        .Visible = True

        For j = LBound(urls) To UBound(urls)
            .Navigate2 urls(j)

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

            wks.Cells(j, "C") = .document.querySelector(".col-sm-8 h1").innerText

            If .document.getElementsByClassName("product-section")(0).getElementsByClassName("prod-stock").Length = 0 Then
                wks.Cells(j, "D") = .document.querySelector(".product-section .prod-stock-out").innerText
            Else
                wks.Cells(j, "D") = .document.querySelector(".product-section .prod-stock").innerText
            End If
        Next
        .Quit
    End With
End Sub

Вы также можете использовать более читабельный:

If .document.querySelectorAll(".product-section .prod-stock").Length = 0 Then
    wks.Cells(j, "D") = .document.querySelector(".product-section .prod-stock-out").innerText
Else
    wks.Cells(j, "D") = .document.querySelector(".product-section .prod-stock").innerText
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...