2016-06-02 1 views
0

Я пытаюсь получить текст после тега <strong>, который имеет определенное значение в AHK. Скажите, что меня интересует то, что происходит после: <strong>Author(s): </strong>. Вот попытка сделать это. Это почти трюк, но выходная строка начинается с некоторого пробела. (Исходная строка не имеет пробела). Как это исправить?Извлечение данных из тегов с определенным значением

IE := ComObjCreate("InternetExplorer.Application") 
IE.Visible := false 
IE.Navigate("https://www.ceeol.com/search/article-detail?id=298665") 

while IE.readyState != 4 || IE.document.readyState != "complete" || IE.busy 
    Sleep 10 

detail := IE.document.getElementsByClassName("article-detail-description") 
div := detail[0].getElementsByTagName("div") 
str := StrSplit(div[0].innerHTML, "<br>") 

for index, val in str{ 
    if(InStr(val, "Author(s): ")){ 
     sName := StrReplace(val, "<strong>Author(s): </strong>") 
     Break 
    } 
} 

MsgBox, % sName 
ExitApp 
+0

Можете ли вы повторно перефразировать вопрос? Я не понимаю вашу проблему. – Qaddura

+0

@Qaddura Мне нужен текст, который сразу после 'Автор (ы):'. – menteith

ответ

1

Похоже, у вас есть белый-пространство в начале возвращаемой Div - какой-то новой линии плюс некоторые пробелы. Попытка:

sName := Trim(SubStr(StrReplace(val, "<strong>Author(s): </strong>"), 2)) 

2 является символом перевода строки и первым пробелом. Поскольку последующие поля не будут иметь, что перевод строки, вы изменили бы 1:

if(InStr(val, "Keywords: ")){ 
    sName := Trim(SubStr(StrReplace(val, "<strong>Keywords: </strong>"), 1)) 

что эквивалентно тому, что было:

sName := StrReplace(val, "<strong>Keywords: </strong>") 

Hth,

+0

Спасибо! Я проверю его завтра и дам вам знать. – menteith

+0

Спасибо! Я смог проверить его, и он работает так, как должно быть! Я очень ценю ваш ответ и подробное объяснение. – menteith