Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата Medic84:
А ты пробовал слеш убирать? »
Пробовал, тоже самое.

Вобщем вот рабочий вариант получения информации о фильме по ссылке. Исходник добывается извращённым путём - через скрытую инстанцию браузера IE

Код: Выделить весь код
#include <IE.au3>

$sURL = "http://www.kinopoisk.ru/level/1/film/333416/"

$sURL = InputBox("Kinopoisk.ru Informer", "Введите ссылку на фильм для получения информации:", $sURL, "", 350, 200)
If @error Then Exit

$oIE = _IECreate($sURL, 0, 0)
$sSource = _IEDocReadHTML($oIE)
_IEQuit($oIE)

$sName = _GetSourceProperty($sSource, '', '(?si).*?<h1 class=moviename-big.*?>(.*?)</h1>.*')
$sSlogan = _GetSourceProperty($sSource, 'слоган')
$sBudget = _GetSourceProperty($sSource, 'бюджет')
$sYear = _GetSourceProperty($sSource, 'год')
$sCountry = _GetSourceProperty($sSource, 'страна')
$sDirector = _GetSourceProperty($sSource, 'режиссер')
$sUSA_Collect = _GetSourceProperty($sSource, 'сборы в США')
$sWorld_Collect = _GetSourceProperty($sSource, 'сборы в мире')
$sRus_Collect = _GetSourceProperty($sSource, 'сборы в России')
$sTime = _GetSourceProperty($sSource, 'время')

$aJanrs = StringRegExp($sSource, '.*?<A href="/level/10/.*?genre.*?">(.*?)</A>.*?', 3)
$sJanrs = ""
$iUbound = UBound($aJanrs)-1

For $i = 0 To $iUbound
    $sJanrs &= $aJanrs[$i]
    If $i < $iUbound Then $sJanrs &= ", "
Next

$sInfo = StringFormat( _
    "Имя:\t\t\t%s\n" & _
    "Слоган:\t\t\t%s\n" & _
    "Бюджет:\t\t\t%s\n" & _
    "Год:\t\t\t%s\n" & _
    "Страна:\t\t\t%s\n" & _
    "Режиссер:\t\t%s\n" & _
    "Сборы в США:\t\t%s\n" & _
    "Сборы в мире:\t\t%s\n" & _
    "Сборы в России:\t\t%s\n" & _
    "Время:\t\t\t%s\n\n" & _
    "Жанр:\t\t\t%s", _
    $sName, $sSlogan, $sBudget, $sYear, $sCountry, $sDirector, $sUSA_Collect, $sWorld_Collect, $sRus_Collect, $sTime, $sJanrs)

MsgBox(64, 'Kinopoisk.ru Info', $sInfo)

;Функция для получения подстроки по заданному pattern
Func _GetSourceProperty($sSource, $sName, $sPattern='')
    Local $s_Pattern = '(?si).*?<TD class=type>%s</TD>.*?<TD(?: class=.*?|)>(?:<A href=".*?">|)(.*?)(?:</A>|)</TD></TR>.*'
    If $sPattern <> '' Then $s_Pattern = $sPattern

    $s_Pattern = StringFormat($s_Pattern, $sName)

    Local $sRet = StringRegExpReplace($sSource, $s_Pattern, '\1')
    If @extended = 0 Then Return SetError(1, 0, "N/A")

    $sRet = StringReplace($sRet, ' ', ' ')
    $sRet = StringRegExpReplace($sRet, '\A«+|»+$', '"')

    Return $sRet
EndFunc

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:34, 18-08-2009 | #8