powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как быстро получить код HTML по URL сайта?
15 сообщений из 15, страница 1 из 1
Как быстро получить код HTML по URL сайта?
    #36327277
Eugen Kru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу поделиться двумя простыми способами.
Может у кого то есть более быстрый и надёжный способ.
Задача получить код HTML страницы сайта по URL сайта.
Первое решение:


*Процедура получения кода HTML страницы сайта.
*Пример вызова UrlToHtml('http://website.com/')
*(c) Eugen Kru
PARAMETERS m.url
PRIVATE ALL
oIE=CREATEOBJECT("InternetExplorer.Application")
oIE.Navigate(m.url)
DO WHILE .T.
IF TYPE('oIE.Document')#'U' AND oIE.Document.ReadyState="complete"
EXIT
ENDIF
ENDDO
m.html=oIE.document.documentElement.innerHTML
IF "HTTP 404"$m.html
RETURN .NULL.
ENDIF
oIE.Quit
RELEASE oIE
RETURN m.html


Второе решение взято из интернет с сайта http://fox.wikis.com/wc.dll?Wiki~ReadUrl~VFP .
Оно по-сложнее, но в нём можно считывать так же файлы картинок JPEG,PNG и т.д. прямо с сайта и сохранять их в переменную и на диске для последующей обрабаботки.
http://fox.wikis.com/wc.dll?Wiki~ReadUrl~VFP - Там же есть и другие решения, такие как например скачивания файла из интернет.


Как прочитать веб страницу:

* readurl.prg 06-Mar-98

* 06-Mar-98 pulled from Q174524 on March 98 Technet CD
* 06-Mar-98 bug fixed about the length of the sReadBuffer

*Any Internet or intranet URL can be passed as a parameter. Microsoft.com
*was chosen for this example.

*Note that Microsoft Internet Explorer must be installed on the computer.

* passed: URLName, in the form "http://www.microsoft.com"
*
* returns: the content of the URL
*
* usage:
*
* uWebContent = ReadURL( "http://www.microsoft.com" )
* uWebContent = ReadURL( "http://www.SomeSite.com/SomeJPG.jpg" )
* This next one provides feedback on the download every 4092 bytes:
* uWebContent = ReadURL( "http://www.SomeSite.com/SomeBigFile.exe",
* "GiveFeedback(lcBytesRead,llOK)", 4092 )
*
* notes:
* 1 - IE does not need to be running to use this, but must be installed

LPARAMETERS pcUrlName, pcOptFeedback, pnOptBuffSize, pcOptOutputFile
* These parameters are No good, pcOptOutputBuffer, pcOptOutputWhole
* because once they're passed as parameters, the original names get hidden, so the
* feedback function can't reference them that way, anyway.
*May 27, 03: Loader v1.01: Added parameter "pcOptOutputFile" to be able to download
* files bigger than 16MB

DECLARE INTEGER InternetOpen IN wininet.DLL STRING sAgent, ;
INTEGER lAccessType, STRING sProxyName, ;
STRING sProxyBypass, INTEGER lFlags

DECLARE INTEGER InternetOpenUrl IN wininet.DLL ;
INTEGER hInternetSession, STRING sUrl, STRING sHeaders, ;
INTEGER lHeadersLength, INTEGER lFlags, INTEGER lContext

DECLARE INTEGER InternetReadFile IN wininet.DLL INTEGER hfile, ;
STRING @sBuffer, INTEGER lNumberofBytesToRead, INTEGER @lBytesRead

DECLARE short InternetCloseHandle IN wininet.DLL INTEGER hInst

#DEFINE INTERNET_OPEN_TYPE_PRECONFIG 0
#DEFINE INTERNET_OPEN_TYPE_DIRECT 1
#DEFINE INTERNET_OPEN_TYPE_PROXY 3
#DEFINE SYNCHRONOUS 0
#DEFINE INTERNET_FLAG_RELOAD 2147483648

LOCAL lcAgent, lhInternetSession, lhUrlFile, llOk, lnOk, lcRetVal, lcReadBuffer, lnBytesRead, laDr[1], llCancel

if vartype(pcOptFeedback)='C'
* if we're given a feedback function, make sure it has both parentheses (looks like a function)
if not ( at('(',pcOptFeedback)>0 and (at('(',pcOptFeedback) < at(')',pcOptFeedback) ) )
pcOptFeedback = .f.
endif
endif

* what application is using Internet services?
lcAgent = "VFP"

lhInternetSession = InternetOpen( lcAgent, INTERNET_OPEN_TYPE_PRECONFIG, '', '', SYNCHRONOUS )

IF lhInternetSession = 0
WAIT WINDOW "Internet session cannot be established" TIME 2
RETURN .null.
ENDIF

lhUrlFile = InternetOpenUrl( lhInternetSession, pcUrlName, '', 0, INTERNET_FLAG_RELOAD, 0 )

IF lhUrlFile = 0
* URL cannot be opened
RETURN .null.
ENDIF

lcRetVal = ""
llOk = .t.
llCancel = .F.
lnTotalBytesRead = 0
lnBytesRead = 0
lcReadBuffer = ''
if VarType(pcOptFeedback)='C' && Call the feedback at the zero mark
=&pcOptFeedback
endif

* Clear output file, if it exists.
if type('pcOptOutputFile')='C' and ADIR(laDr,pcOptOutputFile)>0
DELETE FILE (pcOptOutputFile)
endif

DO WHILE llOK and NOT llCancel
* set aside a big buffer
lcReadBuffer = SPACE(iif(VarType(pnOptBuffSize)='N',pnOptBuffSize,32767))
lnBytesRead = 0
lnOK = InternetReadFile( lhUrlFile, @lcReadBuffer, LEN(lcReadBuffer), @lnBytesRead)

lnTotalBytesRead = lnTotalBytesRead + lnBytesRead

if ( lnBytesRead > 0 )
if type('pcOptOutputFile')='C'
StrToFile(left(lcReadBuffer,lnBytesRead),pcOptOutputFile,.T.) && Add to file.
else
lcRetVal = lcRetVal + left( lcReadBuffer, lnBytesRead )
endif
endif

*!* if vartype(pcOptOutputBuffer)='C'
*!* pcOptOutputBuffer = left( lcReadBuffer, lnBytesRead )
*!* endif
*!* if vartype(pcOptOutputWhole)='C'
*!* pcOptOutputWhole = lcRetVal
*!* endif

* error trap - either a read failure or read past eof()
llOk = ( lnOK = 1 ) and ( lnBytesRead > 0 )

if vartype(pcOptFeedback)='C'
if not &pcOptFeedback
llCancel = .T.
endif
endif
ENDDO

* close all the handles we opened
InternetCloseHandle( lhUrlFile )
InternetCloseHandle( lhInternetSession )

* IF saving to file, return Success status.
if type('pcOptOutputFile')='C'
RETURN NOT llCancel
endif
* return the URL contents
RETURN lcRetVal

Ещё есть
...
Рейтинг: 0 / 0
Как быстро получить код HTML по URL сайта?
    #36352399
Фотография Telum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у меня возникла такая проблема:
Есть игрушка он-лайновая, я хотел бы написать для неё автобот на ВФП 9. Идея бред. Но я за такие только и берусь. Я же Вам рассказывал как делал графику на ВФП (математики не хватило, чтобы закончить). Но суть вопроса в том - как можно не только получать html код страницы, но и упралять элементами? Наковырял два объекта (не могу вспомнить как они называются), 1 умеет просто открывать документы (св-во NavigateUrl), а вот второй посерьезнее - умеет открывать hrml в виде редактора (т.е. видны формы, элементы и т.д.). Может кто подскажет кк управиться с этими зверями?
...
Рейтинг: 0 / 0
Как быстро получить код HTML по URL сайта?
    #36359152
Фотография Telum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос еще открыт.
...
Рейтинг: 0 / 0
Как быстро получить код HTML по URL сайта?
    #36360243
malnevit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну сходи сюда:
http://news2news.com/vfp/index.php
...
Рейтинг: 0 / 0
Как быстро получить код HTML по URL сайта?
    #36360943
Фотография Telum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
malnevitНу сходи сюда:
http://news2news.com/vfp/index.php
Спасибо, друг. Все внимательно изучил. Есть маленькие вопросы по константам, но установка С++ решит проблемы. Однако я чувствую, что этого недостаточно. На сайте онлайн игрушки все реализовано куками, а функциями описанными в той статье не решить этот вопрос (мне так кажеться).
...
Рейтинг: 0 / 0
Как быстро получить код HTML по URL сайта?
    #36366668
Фотография Telum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Telum,

Остановился я на объекте InternetExplore Web Browser, решил кучу вопросов попутно (отключение JIT Debugger), остановился на такой проблеме: как отключить загрузку изображений?
...
Рейтинг: 0 / 0
Как быстро получить код HTML по URL сайта?
    #36366759
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Telum
> Остановился я на объекте InternetExplore Web Browser, остановился на такой проблеме: как отключить загрузку
> изображений?

За это отвечает какой-то ключ в реестре и этот ключ распространяется и на полноценный ИЕ. Поищи или RegMon'ом посмотри
какой ключ меняется если в настройках ИЕ сменить этот параметр.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как быстро получить код HTML по URL сайта?
    #36366987
Фотография Telum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос
> Автор: Telum
> Остановился я на объекте InternetExplore Web Browser, остановился на такой проблеме: как отключить загрузку
> изображений?

За это отвечает какой-то ключ в реестре и этот ключ распространяется и на полноценный ИЕ. Поищи или RegMon'ом посмотри
какой ключ меняется если в настройках ИЕ сменить этот параметр.


Спасибо. Оказывается все вообще просто: отключаем загрузку рисунков в ИЕ ... и все. Ну а если нужно будет включить, то просто включаем в браузере.
...
Рейтинг: 0 / 0
Как быстро получить код HTML по URL сайта?
    #36367195
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Telum
> Спасибо. Оказывается все вообще просто: отключаем загрузку рисунков в ИЕ ... и все. Ну а если нужно будет
> включить, то просто включаем в браузере.

Так точно, только за такое своеволие мне нафиг не нужна такая программа, потому, что картинок с порносайтов не видно
будет
Если нужен только текст, то можно использовать для загрузки
MSXML2.XMLHTTP после получения текста страницы пройтись
и вырезать все ссылки на рисунки, а после этого загружать в web-browser

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как быстро получить код HTML по URL сайта?
    #36367208
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Игорь Горбонос
Вот ещё пример

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как быстро получить код HTML по URL сайта?
    #36367622
Фотография Telum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,
...
Рейтинг: 0 / 0
Как быстро получить код HTML по URL сайта?
    #36367628
Фотография Telum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо.
...
Рейтинг: 0 / 0
Как быстро получить код HTML по URL сайта?
    #36368933
Фотография Telum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Telum,
...
Рейтинг: 0 / 0
Как быстро получить код HTML по URL сайта?
    #36368999
Фотография Telum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А каким образом можно отправлять данные методом post? Хотелось бы увидеть рабочий пример.
...
Рейтинг: 0 / 0
Как быстро получить код HTML по URL сайта?
    #36369062
Фотография Telum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разобрался. Все опять просто (В методе navigate("http://yandex.ru/yandsearch?text=aaa&lr=10995"))
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как быстро получить код HTML по URL сайта?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]