download.bg
 Вход Списание  Новини  Програми  Статии  Форум  Чат   Абонамент  Топ95   Архив 

Взимане на съдържанието на web-страница с различни езици за програмиране

Автор
Съобщение
phrozencrew
Вто, 21.07.09, 21:23
Здрасти хора,

Предполагам, че като прочетете заглавието ще ви стане ясно, но все пак ще поясня. Мисля, че ще е полезно да направим подобна тема за взимане на съдържанието от файлове, които се намират някъде в интернет, като темата трябва да обхване максимален брой езици за програмиране. Съвременните езици се справят много лесно с тази задача, но компилируемите и тези от ниско ниво изискват много повече усилия. Ще е добре да направим едно каталогизиране на този проблем и в процеса на търсене ще добавяме решения.
За достъпен резултат предлагам да се приеме принтването на съдържанието в конзолата, шела или промпта. А като страница за трасиране предлагам да ползваме http://download.bg, т.е входящата страница на портала. Мисля, че подобен текстови трафик ще го понесат.
За начало бих дал примери с 2 от популярните съвременни езици:

Perl:
use LWP::Simple;
print get('http://download.bg');

PHP:
<?php
echo file_get_contents('http://download.bg/'); 
?>

редактиран от phrozencrew на 21.07.09 21:24
insecteater
Вто, 21.07.09, 22:00
На gentee 3 е леко шантаво - включва се библиотека, извиква се инициализираща някаква функция, резултата отива в буфер (функцията връща булева стойност за успех или неуспех).
include : $"..\lib\HTTP\HTTP.g"
func getcontents <main>
{
   str content
   inet_init()
   http_get ("http://www.download.bg", content->buf, 0, $HTTPF_STR)
   print(content)
}

phrozencrew
Сря, 22.07.09, 09:43
VBScript get web page content:
Този език няма директен начин за работа с интернет, обаче може да използва различни библиотеки на Windows. В случая използвам IE, макар, че понякога е по-добре да се прочете бинарно страницата с msxml.
dim strContents
dim ie
set ie = WScript.CreateObject("InternetExplorer.Application")
 
ie.visible =false  ' указваме всичко да е скрито
ie.navigate "download.bg"  ' адреса
do while ie.busy=true ' зацикляме го до като не стигне края на страницата
loop
strContents =ie.document.documentelement.innerhtml
WScript.echo strContents
MsgBox strContents
ie.quit
set ie =nothing

Всъщност ето и вариант с msxml:
Dim oXMLHTTP
Dim oStream
 
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP.3.0")
 
oXMLHTTP.Open "GET", "http://download.bg", False
oXMLHTTP.Send
 
If oXMLHTTP.Status = 200 Then
        Set oStream = CreateObject("ADODB.Stream")
        oStream.Open
        oStream.Type = 1
        oStream.Write oXMLHTTP.responseBody
        oStream.SaveToFile "web_page.txt"
        oStream.Close
End If

phrozencrew
Сря, 22.07.09, 10:11
D programming get web page content:
Този пример е с инсталирано Tango и е за версиите на D 1.x
auto page = new HttpGet ("http://download.bg");
Cout (cast(char[]) page.read) ();

редактиран от phrozencrew на 22.07.09 10:12
phrozencrew
Сря, 22.07.09, 19:08
Ruby get web page content;
require 'net/http'
Net::HTTP.start( 'download.bg', 80 ) do |http|
    print( http.get( '/' ).body )
end

Python get web page content:
from urllib import urlopen
print urlopen('http://download.bg/').read()

Като се зачетох във форума на FreePascal разбрах, че много хора предпочита да използват с exec() или run(), или `command` с външен професионален инструмент като cURL и wget. И двата инструмента си ги има в unix like OS, за това им сложих линкове за Win.

Ето и примери от CommandPrompt на Windows.
wget get web page content:
wget -O - -nv http://download.bg

cURL get web page content:
curl H http://download.bg

И ако искате да прочетете HTTP HEAD-секцията, която често е интересна :
curl H -i http://download.bg

Това би ви показало как ви отговаря сървара на Download.bg:
HTTP/1.1 200 OK
Date: Wed, 22 Jul 2009 15:34:26 GMT
Server: Apache/2.0.52 (CentOS)
X-Powered-By: PHP/4.3.9
Set-Cookie: SID=1951d31ce718815b0d76c3fa037b9df4; path=/
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Cache-Control: no-cache, must-revalidate
Pragma: no-cache
Last-Modified: Wed, 22 Jul 2009 15:34:26 GMT
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset='windows-1251'

phrozencrew
Пет, 10.02.12, 23:20
REBOL - get web page content:
print read http://www.rebol.com 
 

Коментар

за нас | за разработчици | за реклама | станете автори | in english  © 1998-2024   Experta Ltd.