Что нового

Получить заголовок страницы в Интернете

Сообщения
60
Репутация
-2
Привет. Такая задача.
Надо получить заголовок страницы, которая расположена на удалённом сервере.
Т.е., надо получить текст между тэгами <TITLE>.
С помощью каких встроенных функций можно такое сделать?
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
C помощью
Код:
inetread или inetget и stringregexp
 
Автор
Parazit
Сообщения
60
Репутация
-2
Та я уже думал об этом. Слишком непрактично. Загружать всю страницу на жёсткий диск,
вытаскивать нужный текст, удалять страницу.
Я работаю с немаленькими списками URL.
 
Автор
Parazit
Сообщения
60
Репутация
-2
Вы имеете ввиду, использовать inetread вместо inetget ?
 
Автор
Parazit
Сообщения
60
Репутация
-2
Т.е., я не могу встроенными средствами получить номер индекса начала паттерна со страницы Интернета?

Я не могу получить N-ое количество байт, с нужного мне смещения?
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Нет не можете, это экономия на спичках. Часть данных может только видео отдавать. Грузите все в память, дальше регексп и доставайте title.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
OffTopic:
мне тоже :thumbs_up: поставьте. а то тоже хочется
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Parazit
Код:
$sTitle = _HTTPRead('http://autoit-script.ru', '', '(?i)<title>(.*?)</title>')
ConsoleWrite($sTitle & @CRLF)

Func _HTTPRead($sURL, $sReferer = '', $sStopPattern = '', $fUTF8 = True, $fStripHeader = True)
	Local $aURL, $iOpt, $sName_To_IP, $iSocket = -1, $sCommand = '', $sRecv = ''
	
	$aURL = StringRegExp($sURL, '^(?:[^:]+://)?([^/]+)(/?.+$)?', 3)
	
	Switch UBound($aURL)
		Case 0
			Return SetError(-1, 0, '')
		Case 1
			ReDim $aURL[2]
			$aURL[1] = '/'
	EndSwitch
	
	$iOpt = Opt('TCPTimeout', 5000)
	
	TCPStartup()
	$iSocket = TCPConnect(TCPNameToIP($aURL[0]), 80)
	
	If $iSocket = -1 Then
		Opt('TCPTimeout', $iOpt)
		TCPShutdown()
		Return SetError(1, 0, '')
	EndIf
	
	$sCommand &= 'GET ' & $aURL[1] & ' HTTP/1.0' & @CRLF
	$sCommand &= 'Host: ' & $aURL[0] & @CRLF
	$sCommand &= 'User-Agent: AutoIt/' & @AutoItVersion & ' (Windows 6.1; en-US)' & @CRLF
	$sCommand &= 'Referrer: ' & $sReferer & @CRLF
	$sCommand &= 'Connection: close' & @CRLF & @CRLF
	
	If TCPSend($iSocket, $sCommand) > 0 Then
		While 1
			$sRecv &= TCPRecv($iSocket, 256)
			
			If @error Or ($sStopPattern And StringRegExp($sRecv, $sStopPattern)) Then
				ExitLoop
			EndIf
		WEnd
	EndIf
	
	Opt('TCPTimeout', $iOpt)
	TCPCloseSocket($iSocket)
	TCPShutdown()
	
	If $sRecv == '' Then
		Return SetError(2, 0, '')
	EndIf
	
	If $fStripHeader Then
		$sRecv = StringTrimLeft($sRecv, StringInStr($sRecv, @CRLF & @CRLF, 2) + 3)
	EndIf
	
	If $fUTF8 Then
		$sRecv = BinaryToString(StringToBinary($sRecv), 4)
	EndIf
	
	If $sStopPattern And StringRegExp($sRecv, $sStopPattern) Then
		Return StringRegExp($sRecv, $sStopPattern, 3)[0]
	EndIf
	
	Return $sRecv
EndFunc
 
Верх