Форум » [x]Harbour » Работа с HTML(Сайты в Интернет) » Ответить

Работа с HTML(Сайты в Интернет)

Softlog86: Друзья , подскажите в каком направлении рыть ... Есть сайт в интернете . Там поле для ввода строки поиска . .... Вводим строку . Сайт выдаёт (если найдёт у себя в базе) какую-то информацию в виде HTML-странички .... Задача такая : Программа на Harbour должна делать запрос на сайт и полученную информацию отображать в своём окне . При этом нужно кой-чего из этой информации убрать или заменить некоторые слова ( сайт буржуйский ) . Хочу прилепить как-бы On-Line поиск .... но чтоб данные брать с чужого сайта .... Какие будут мысли ? Или не связываться с такой задачей ?

Ответов - 47, стр: 1 2 3 All

santy: Softlog86 пишет: Есть ошибки и недостаточность кода : Разобрались? Или объяснить более детально?

Softlog86: В принципе разобрался . Но есть ещё вопросы .Пока синтаксис не ложится в голову :) Не знаю как из таблицы <table вытащить данные по конкретным столбцам (3 и 4 колонка ) <h3>Vэsledek hledбnн pro шetмzec - CA1035IR </h3> <table style='margin-top:2px;'> <--------- НАША ТАБЛИЦА <tbody> <th>Nalezenй инslo <th>Firma <th>Nalezenб polo_ka <th>Dodavatel <th>Nбzev polo_ky <th>MC <th>MC + Dph <tr> <td>CA1035IR <td>HC-PARTS <td style='background:PaleGreen;'><a href='polozka.php?id_polozky=693443'>CA1035IR</a> <---- Это нам нужно то есть 3 и 4 колонка <td style='background:PaleGreen;'>HC-PARTS <---- И это нам нужно <td style='background:PaleGreen;'>alternбtor <td style='background:PaleGreen;' align=right>6 622,00 <td style='background:PaleGreen;' align=right>8 013,00 <tr> <td>CA1035IR <td>HELLA <td style='background:PaleGreen;'><a href='polozka.php?id_polozky=2418964'>860559</a> <---- Это нам нужно то есть 3 и 4 колонка <td style='background:PaleGreen;'>PRESTOLITE ELECTRIC <---- И это нам нужно <td style='background:PaleGreen;'>alternбtor <td style='background:PaleGreen;' align=right>0,00 <td style='background:PaleGreen;' align=right>0,00 <tr> <td>CA1035IR <td>HELLA <td style='background:PaleGreen;'><a href='polozka.php?id_polozky=1393149'>437442</a> <---- Это нам нужно то есть 3 и 4 колонка <td style='background:PaleGreen;'>VALEO <---- И это нам нужно <td style='background:PaleGreen;'>alternбtor <td style='background:PaleGreen;' align=right>20 445,00 <td style='background:PaleGreen;' align=right>24 738,00 .....................................

santy: Softlog86 пишет: В принципе разобрался . Но есть ещё вопросы .Пока синтаксис не ложится в голову :) Не знаю как из таблицы <table вытащить данные по конкретным столбцам (3 и 4 колонка ) Да там нет ничего сложного. Заполняем масивы объектов и проходим по массиву, берём объект и используя его методы достаём данные. Если Вы сами формируете html файл то лучше его наполнить, например добавить атрибуты : <td class="" id=""></td> чтобы можна их было как-то отличить. Если такое невозможно, ну тогда : 1. Мы нашли свою таблицую 2. Считываем все <tr> в масив, проходим по каждому <tr> : FOR EACH otrNode IN oNodeTable:trS 3. Считываем все <td> для конкретной <tr> в масив FOR EACH otdNode IN otrNode:tdS 4. проходим по массиву <td> . Если не можем отличить столбцы по уникальным атрибутам , тогда проще счётчик сделать. Когда счётчик будет 3 и 4 данные выбираем. В случае 3 столбца нужно опять считать масив тегов <a> и вытянуть атрибут href. NEXT NEXT


Softlog86: Тяжко пока писать .... ошибаюсь часто , особо не зная свойств объектов :(

Softlog86: как добыть строку что указана в img src= ??? Вот эта часть в тексте HTML страницы : 1 <td align=center><img src='foto/123.jpg'> 2 <td align=left><a href='polozka.php?id_polozky=3045032'><nobr>132216</nobr></a> :href - (строка 2 ) то есть ссылки получать умею Как добраться к <img src= , то есть получить его значение (foto/123.jpg) ?? onode:src или onode:img (по аналогии с :href) - не проодит - пустые значения выдаёт

fil: Если сайт идет на IE, то можно 1. открыть IE как ActiveX и встроить в свое окно 2. средствами DOM открываем этот сайт и мониторим его(по таймеру например) Ежели под IE не идет делаем тоже самое напр. на JS Или чего-то другое надо ?

Softlog86: Это нужно средствами Harbour + MiniGui cделать . Разобрать полученную страницу .... Loadhtml.prg как пример .

petr707: <img src='foto/123.jpg'> 1) Может быть так ? oDataset := oDoc1:findfirst( "img","src",@cValue,@cData) 2) В исходнике документа сделать замену 'foto/' на 'foto-' после определения значений - обратную замену ( м.б. проблема в символе / )

santy: подключаем hbtip. код: LOCAL otdNode1, oNode, oImg_1 LOCAL cImage_path .... FOR EACH otdNode1 IN oNode:tdS FOR EACH oImg_1 IN otdNode1:imgS ...... cImage_path := oImg_1:getAttribute( "src" ) ...... NEXT NEXT

MIKHAIL: Соединяюсь по 443(https) порту, использую синтаксис запроса HTTP, сервер возвращает ответ: HTTP/1.1 400 Bad Request Server: nginx Date: Sat, 05 Oct 2019 19:34:42 GMT Content-Type: text/html Content-Length: 150 Connection: close <html> <head><title>400 Bad Request</title></head> .... Вероятно требуется как то подключать сертификат ? Какой формат запроса https ?

MIKHAIL: Неужели никто с https не работает ? Сейчас большинство сайтов переведены на этот протокол... может есть где примеры глянуть ?

Dima: MIKHAIL пишет: Неужели никто с https не работает ? Погугли Harbour + Https

Andrey: MIKHAIL пишет: Неужели никто с https не работает ? Попробуй поиск в инете - harbour + https Вот здесь смотри - http://www.kresin.ru/hrbfaq_3.html#Doc13_15 [pre2]// Это 2-й поток Function GetData( lEnd ) Local nCount := 0, hSocket, cUrl, cServer, cBuf, aRes cServer := "clipper.borda.ru" cURL := "GET http://" + cServer + "/ HTTP/1.1" +Chr(13)+Chr(10) cURL += "Host: " + cServer + Chr(13)+Chr(10) cURL += "User-Agent: test_util"+Chr(13)+Chr(10) cUrl += Chr(13)+Chr(10)[/pre2] А по моему вообще очень трудно работать с https через Harbour. Судя по реакции на форуме - здесь таких умельцев нет.

MIKHAIL: Andrey я так и работаю с http, а вот https не пашет, выше ответ сервера приводил. Я полагаю требуется подключить ssl сертификат к запросу. А вот примеров не найти что то...

Andrey: MIKHAIL пишет: Я полагаю требуется подключить ssl сертификат к запросу. У себя в проге обновление качаю с сайта через внешнюю программу на C#, соединяюсь по https ! Прогу писал не я. Подключить сертификат в Харборе даже и не знаю как. Наверное очень трудоёмко это...

MIKHAIL: Andrey пишет: У себя в проге обновление качаю с сайта через внешнюю программу на C#, соединяюсь по https ! Ну вот я так же извратился, только через промежуточный сервер, который принимает http запрос, далее скипт на php получает данные с нужного https ресурса... Но все же хочется без костылей...

PSP: В сырцах харбора посмотрите contrib\hbssl. Там в папке tests есть примеры.

Dima: PSP пишет: В сырцах харбора посмотрите contrib\hbssl. Там в папке tests есть примеры. с языка снял PS Hbcurl умеет по Https

MIKHAIL: PSP пишет: В сырцах харбора посмотрите contrib\hbssl. Там в папке tests есть примеры. Спасибо, как раз уже посмотрел, все заработало, в сокращенном виде выглядит так #require "hbssl" #define CRLF Chr( 13 ) + Chr( 10 ) PROCEDURE Main() LOCAL ssl_ctx LOCAL ssl LOCAL socket LOCAL buffer LOCAL tmp hb_inetInit() socket := hb_inetCreate() ? hb_inetTimeout( socket, 2500 ) ? hb_inetConnect( "www.fortify.net", 443, socket ) ? hb_inetErrorCode( socket ) SSL_init() ? "SSL_CTX_NEW", ssl_ctx := SSL_CTX_new() ? "SSL_NEW", ssl := SSL_new( ssl_ctx ) ? "INET FD", hb_inetFD( socket ) ? "SSL_SET_FD", SSL_set_fd( ssl, hb_inetFD( socket ) ) ? "SSL_CONNECT", tmp := SSL_connect( ssl ) ? "SSL_GET_ERROR", SSL_get_error( ssl, tmp ) ? "SSL_WRITE", tmp := SSL_write( ssl, "GET / http/1.1" + CRLF + "Host: " + "www.fortify.net" + CRLF + CRLF ) ? "SSL_GET_ERROR", SSL_get_error( ssl, tmp ) buffer := Space( 1024 ) ? "SSL_READ", tmp := SSL_read( ssl, @buffer ) ? "SSL_GET_ERROR", SSL_get_error( ssl, tmp ) ? buffer ? hb_inetClose( socket ) RETURN

PSP: Dima пишет: с языка снял Ну, прости)) MIKHAIL пишет: Спасибо Не за что)



полная версия страницы