Topic: Продолжение темы tWebBrowser под другим углом.

Добрый вечер!
Просмотрел предыдущую тему http://myvisualdatabase.com/forum/viewtopic.php?id=2896
и воспользовался примером.
Понял, что mvd может выдавать исходный код сайта. Появилась идея автоматизации одного своего проекта, скажите возможно это?
Рассказываю:

Думаю, все мы знаем сайт авито.
В нем есть отдел квартиры.
Все страницы этого (да и других) разделов имеют одинаковый каркас исходного кода.
(То есть например,
<div class="sticky-header-prop sticky-header-title">
1-к квартира, 35 м², 2/10 эт.
</div> - это название объявления.)

Зная код каркаса, возможно ли прописать в скрипте, чтобы из исходного кода информация по маске типа
<div class="sticky-header-prop sticky-header-title">__________</div> текст автоматически помещался в edit 1, указанной формы?

Для наглядности картинка с процедурой.

Пытался выразится наиболее корректно, если криво - извините.

Post's attachments

Attachment icon 1212.png 853.52 kb, 321 downloads since 2016-12-05 

Re: Продолжение темы tWebBrowser под другим углом.

Приветствую.


Пример

procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
var
    sHTML: string;
    sSearch: string;
    iStart, iEnd: integer;
begin
    ......

    sHTML := Web.GetHTMLBody; // получем html код страницы
    sSearch := '<div class="sticky-header-prop sticky-header-title">'; // искомая строка


    iStart := Pos(sSearch, sHTML); // находим начальную позицию искомой строки
    if iStart > 0 then
    begin
        iEnd := PosEx('</div>', sHTML, iStart); // находим конечную позицию
        if iEnd > 0 then
        begin
            Form1.Edit1.Text := Copy(sHTML, iStart+Length(sSearch), iEnd-iStart-Length(sSearch)); // копируем текст между искомыми строками
        end;
    end;

end;
Dmitry.

3 (edited by sidhillsaid 2016-12-06 11:31:54)

Re: Продолжение темы tWebBrowser под другим углом.

Большое спасибо, вечером опробую!
И, пока не опробывал, но посмотрел код, возможно будет проблема с конечной позицией, так как конечная позиция - это тег </div> которым заканчивается каждый блок в исходном коде, скрипт поймет какой именно <div> нужен?

Re: Продолжение темы tWebBrowser под другим углом.

sidhillsaid wrote:

Большое спасибо, вечером опробую!
И, пока не опробывал, но посмотрел код, возможно будет проблема с конечной позицией, так как конечная позиция - это тег </div> которым заканчивается каждый блок в исходном коде, скрипт поймет какой именно <div> нужен?

Поймет, данная строка ищет закрывающий div начиная с начальной позиции, где div открывается

iEnd := PosEx('</div>', sHTML, iStart); 

в параметре iStart указывается начало поиска.

Dmitry.

Re: Продолжение темы tWebBrowser под другим углом.

Спасибо, начал пробовать пример, столкнулся немного с другой проблемой.
Допустим я открываю сайт Авито, захожу по нужной ссылке.
Как заставить Button1 работать так, чтобы предоставлялся код текущей html страницы, открытой в проекте, а не той, что прописана в скрипте?

Re: Продолжение темы tWebBrowser под другим углом.

в примере выше код всегда получается с текущей страницы

sHTML := Web.GetHTMLBody; // получем html код страницы
Dmitry.