Разбор HTML в VBA с помощью запроса get запрос

1

Я использую код другого пользователя, потому что это старый файл, который используют другие люди, я хочу его обновить, чтобы сделать его более эффективным, но мне нужна небольшая помощь. Ниже приведена операция vba. Мне нужно только получить информацию, но удалить все, кроме определенного слова, которое изменяется при каждом запуске операции. Я мог бы использовать regex и objRE.Pattern = "|" но слово изменяется в зависимости от статуса.

HTML:

<span  onmouseover="ShowText('Message','blahblah'); return true;" 
onmouseout="HideText('Message'); return true;" 
href="javascript:ShowText('Message')">---(PSA)---</span>
</font><a href='?srn=numbers12131131'target='_self'><font color='#6666FF' 
size='3'>numbers123232343</font></a><font  size='3'>----Installed----MUM 
Indication:In Scope-<font color='#00CC00'>PASS WITH WARNING</font>--- (20181018) 
</td><tr></table> </b><br>
<table class="OrderForm" width="1000"> '

Мне просто нужен статус Installed в моем листе excel.

Код VBA, который нуждается в работе:

Sub GetComment()

Dim book As Workbook
Dim sheet As Worksheet
Dim row As Integer
Dim SRN As String
Dim whttp As Object


Set book = ThisWorkbook
Set sheet = book.Worksheets("CMT Data")
Set whttp = CreateObject("WinHTTP.WinHTTPrequest.5.1")


row = 2
SRN = sheet.Cells(row, 1)
Do While SRN <> ""
    Debug.Print SRN
    whttp.Open "GET", "www.websitedatgoeshere.com" & SRN, False
    whttp.SetRequestHeader "Cookie", "mycookiefromwebsite;"
    whttp.send
    Debug.Print whttp.responseText
    sheet.Cells(row, 2) = whttp.responseText
    row = row + 1
    SRN = sheet.Cells(row, 1)

Loop

Set whttp = Nothing

End Sub
  • 0
    Итак, какой статус установлен из вышеперечисленного, т.е. ожидаемую строку для сохранения? И какова стоимость СРН? Пожалуйста, приведите пример. Является ли реальный URL общедоступным? В противном случае, вы можете включить полный текст ответа? Если вы слишком долго можете использовать pastebin.com .
  • 1
    websitedatgoeshere.com" & SRN что, как @QHarr спросил, выглядят ли эти значения. Если они просто ID, они не будут работать, так как у вас будет .com1234 а не что-то вроде .com/?id=1234
Показать ещё 5 комментариев
Теги:
excel
web-scraping

1 ответ

1
Лучший ответ

Это основано на том, если и только если слово всегда находится между "----" и "----" и что это первое вхождение в ответ. Если вы не первый, вы можете отрегулировать индекс 1 по мере необходимости.

Debug.Print Split(Split(whttp.responseText, "----")(1), "----")(0)
sheet.Cells(row, 2) = Split(Split(whttp.responseText, "----")(1), "----")(0)
  • 0
    Спасибо. это не похоже на работу, я получил ошибку компиляции: неверная или неквалифицированная ссылка. это случилось раньше, когда я попытался разделиться. Я не уверен, почему это происходит. Я пытался изменить .responsetext, но это не похоже на работу.
  • 0
    Используйте whttp.responseText, если не в операторе With, содержащем объект http.
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню