Что нового

Помогите вытащить ссылки которые генерятся javascript

komorov74

Новичок
Сообщения
81
Репутация
0
в крации вот отсюда http://ru.savefrom.net/http:/youtube.com/watch?_openstat=shrt;sfrom;;&v=u7deClndzQw надо вытащить ссылки на mp4 c расширением 360 и 720 p и положить в текстовой файлик!!!! -буду очень благодарен!!!

не могу сам допетрить!!!! :mad:
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Re: Парсинг -не могу найти эти ссылки в html коде-ПОМОГИТЕ!!!

komorov74
И не получится, потому что ссылки генерируются с помощью javascript
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
komorov74,
Если через IE, то попробуйте так.
Код:
#include <IE.au3>

$sUrl = 'http://ru.savefrom.net/'
$sSearch = 'http://www.youtube.com/watch?v=dV-prXX1ZOw&feature=g-logo&context=G2aab634FOAAAAAAAEAA'

$sFormat = 'mp4'
$iQuality = 720
$sLink = ''
$sFileName = ''

;$oIE = _IECreate($sUrl)
;$oForm = _IEGetObjById($oIE, 'sf_form')
;$oInput = _IEFormElementGetObjByName($oForm, 'sf_url')
;_IEAction($oInput, 'focus')
;_IEFormElementSetValue($oInput, $sSearch)
;$oSubmit = _IEFormElementGetObjByName($oForm, 'sf_submit')
;_IEAction($oSubmit, 'click')
$oIE = _IECreate($sUrl & $sSearch)
$iStart = TimerInit()
While 1
	Sleep(500)
	$oTags = _IETagNameGetCollection($oIE, 'div')
	If Not @error Then
		If @extended > 70 Then ExitLoop
	EndIf
	If TimerDiff($iStart) > 20000 Then
		_IEQuit($oIE)
		MsgBox(16, 'Error', 'Error 1')
		Exit
	EndIf
WEnd
For $oTag In $oTags
	If $oTag.classname == 'link' And StringInStr($oTag.innertext, $sFormat) Then
		ConsoleWrite($oTag.innertext & @LF)
		$oLink = _IETagNameGetCollection($oTag, 'a', 0)
		If Not @error Then
			$sLink = $oLink.href
			ConsoleWrite($sLink & @LF)
			If StringInStr($oTag.innertext, $iQuality) Then
				ExitLoop
			EndIf
		EndIf
	EndIf
Next
If Not $sLink Then
	_IEQuit($oIE)
	MsgBox(16, 'Error', 'Error 2')
	Exit
EndIf
$oInputs = _IETagNameGetCollection($oIE, 'input')
For $oInput In $oInputs
	If $oInput.classname == 'file_name' Then
		$sFileName = $oInput.value & '.' & $sFormat
		ConsoleWrite($sFileName & @LF)
		ExitLoop
	EndIf
Next
_IEQuit($oIE)
If $sFileName Then
	MsgBox(64, 'Info', 'Link: ' & $sLink & @LF & 'File name: ' & $sFileName)
Else
	MsgBox(16, 'Error', 'Error 3')
	Exit
EndIf
 
Автор
K

komorov74

Новичок
Сообщения
81
Репутация
0
Большое спасибо!!!!
только похоже на частный случай
если поменять переменную $sSearch

на http://vk.com/video36879551_159705363 то оно перестает искать.

хотя если зайти по ссылки http://ru.savefrom.net/http://vk.com/video36879551_159705363 через браузер,прекрасно показывает что у этого видео есть откуда его скачать.

ПОМОГИТЕ!!!!!!!!
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
komorov74,
Ссылка на поиск http://vk.com/video36879551_159705363.
 
Автор
K

komorov74

Новичок
Сообщения
81
Репутация
0
Чего то я не понял, последнего ответа. Даже не скриншоте видно 3 ссылки на скачивания.
вот их то ине и нужно скопировать в файлик .
Прошу прощения если я очень не понятливый и настырный.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
komorov74,
Сначала Вам надо было вытащить одну ссылку с заданным качеством.
Код:
#include <IE.au3>

$sFile = @ScriptDir & '\Link.txt'
$sUrl = 'http://ru.savefrom.net/'
$sSearch = 'http://vk.com/video36879551_159705363'
$sFormat = 'mp4'
Dim $aInfo[50][2]
$iCount = 0

$oIE = _IECreate($sUrl & $sSearch)
$iStart = TimerInit()
While 1
	Sleep(500)
	$oTags = _IETagNameGetCollection($oIE, 'div')
	If Not @error Then
		If @extended > 70 Then ExitLoop
	EndIf
	If TimerDiff($iStart) > 20000 Then
		_IEQuit($oIE)
		MsgBox(16, 'Error', 'Error 1')
		Exit
	EndIf
WEnd
For $oTag In $oTags
	If $oTag.classname == 'link' And StringInStr($oTag.innertext, $sFormat) Then
		$iCount += 1
		$aInfo[$iCount][0] = $oTag.innertext
		$oLink = _IETagNameGetCollection($oTag, 'a', 0)
		If Not @error Then
			$aInfo[$iCount][1] = $oLink.href
		EndIf
	EndIf
Next
If Not $iCount Then
	_IEQuit($oIE)
	MsgBox(16, 'Error', 'Error 2')
	Exit
EndIf
ReDim $aInfo[$iCount + 1][2]
$aInfo[0][0] = $iCount
$oInputs = _IETagNameGetCollection($oIE, 'input')
For $oInput In $oInputs
	If $oInput.classname == 'file_name' Then
		$aInfo[0][1] = $oInput.value; & '.' & $sFormat
		ExitLoop
	EndIf
Next
_IEQuit($oIE)
If $aInfo[0][1] Then
	$sText = 'File name: ' & $aInfo[0][1] & @CRLF
	For $i = 1 To $aInfo[0][0]
		$sText &= $aInfo[$i][0] & ': ' & $aInfo[$i][1] & @CRLF
	Next
	$sText &= '~-~-~-~-~-~-~-~-~-~-~-~-~-~-~' & @CRLF
	$hFile = FileOpen($sFile, 1)
	FileWrite($hFile, $sText)
	FileClose($hFile)
	MsgBox(64, 'Info', $sText)
Else
	MsgBox(16, 'Error', 'Error 3')
	Exit
EndIf
 
Автор
K

komorov74

Новичок
Сообщения
81
Репутация
0
Моей наглости нет приделу.Спасибо большое!!!
По поводу -вытащить одну ссылку . Вроде в заголовке четко написано "надо вытащить ссылки на mp4 c расширением 360 и 720 p и положить в текстовой файлик "!!!! -буду очень благодарен!!!



Уважаемый тысяча прощений - вот в первом Вашем примере действительно вытаскиваются путевые ссылки для скачивания :smile:
а в последнем какие то не доделанные ссылки :(

типо http://savefrom.net/get.php?d=122865352&t=90661a60612b5f91d64f4a5264c8a763

а должно что то на mp4 заканчиваться -что бы проиграть в плеере можно было :smile:

В любом случаи СПАСИБО БОЛЬШОЕ!!!!!!!
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
komorov74 [?]
а в последнем какие то не доделанные ссылки
Откройте http://ru.savefrom.net/http://vk.com/video36879551_159705363 в любом браузере и попробуйте найти другие ссылки.
 
Автор
K

komorov74

Новичок
Сообщения
81
Репутация
0
Уважаемый каюсь. Сам дурак -да действительно , ВЫ абсолютно правы!!!!!!
 
Автор
K

komorov74

Новичок
Сообщения
81
Репутация
0
Уважаемый madmasles ещё раз спасибо!!!!
Вы не будете против если я Вас в соавторы добавлю ?

Помогите ещё раз (и наверное не последний) !!!!
По приведенным вверху ссылкам там ещё есть маленький скриншотик(видео которое нашли) можно на него ссылку тоже вытягивать ?
 
Автор
K

komorov74

Новичок
Сообщения
81
Репутация
0
Ребят проверьте скрипты-они только у меня стали ошибку выдавать или у всех???
 
Автор
K

komorov74

Новичок
Сообщения
81
Репутация
0
Большая просьба не поленитесь - проверьте -не могу понять толи это у меня с аитой глюк , толи скрипт кривой (хотя раньше работал)- конкретно в консоли ошибка вот на эту штуку $oIE = _IECreate($sUrl) - $sUrl -забивал любой -пишет что не может создать. Куда копать не знаю -до этого стояла другая версия AI. но ехе файл тоже не работает как и скрипт :smile:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
komorov74,
Вы дайте код, который проверять надо, мой у меня работает.
 
Автор
K

komorov74

Новичок
Сообщения
81
Репутация
0
Код в первом вашем ответе
в принципе вот он

Код:
#include <IE.au3>

$sUrl = 'http://ru.savefrom.net/'
$sSearch = 'http://www.youtube.com/watch?v=dV-prXX1ZOw&feature=g-logo&context=G2aab634FOAAAAAAAEAA'

$sFormat = 'mp4'
$iQuality = 720
$sLink = ''
$sFileName = ''

;$oIE = _IECreate($sUrl)
;$oForm = _IEGetObjById($oIE, 'sf_form')
;$oInput = _IEFormElementGetObjByName($oForm, 'sf_url')
;_IEAction($oInput, 'focus')
;_IEFormElementSetValue($oInput, $sSearch)
;$oSubmit = _IEFormElementGetObjByName($oForm, 'sf_submit')
;_IEAction($oSubmit, 'click')
$oIE = _IECreate($sUrl & $sSearch)
$iStart = TimerInit()
While 1
    Sleep(500)
    $oTags = _IETagNameGetCollection($oIE, 'div')
    If Not @error Then
        If @extended > 70 Then ExitLoop
    EndIf
    If TimerDiff($iStart) > 20000 Then
        _IEQuit($oIE)
        MsgBox(16, 'Error', 'Error 1')
        Exit
    EndIf
WEnd
For $oTag In $oTags
    If $oTag.classname == 'link' And StringInStr($oTag.innertext, $sFormat) Then
        ConsoleWrite($oTag.innertext & @LF)
        $oLink = _IETagNameGetCollection($oTag, 'a', 0)
        If Not @error Then
            $sLink = $oLink.href
            ConsoleWrite($sLink & @LF)
            If StringInStr($oTag.innertext, $iQuality) Then
                ExitLoop
            EndIf
        EndIf
    EndIf
Next
If Not $sLink Then
    _IEQuit($oIE)
    MsgBox(16, 'Error', 'Error 2')
    Exit
EndIf
$oInputs = _IETagNameGetCollection($oIE, 'input')
For $oInput In $oInputs
    If $oInput.classname == 'file_name' Then
        $sFileName = $oInput.value & '.' & $sFormat
        ConsoleWrite($sFileName & @LF)
        ExitLoop
    EndIf
Next
_IEQuit($oIE)
If $sFileName Then
    MsgBox(64, 'Info', 'Link: ' & $sLink & @LF & 'File name: ' & $sFileName)
Else
    MsgBox(16, 'Error', 'Error 3')
    Exit
EndIf


Проверил ещё раз -вставлял как есть
ошибки в консоли:
MP4 360p
--> IE.au3 V2.4-0 Error from function _IETagNameGetCollection, $_IEStatus_InvalidObjectType
в сплывающем окне -error 2
хотя сайт открывает и ссылку там видно:smile:
 
Сообщения
7
Репутация
-1
[Автоматизация] Re: Помогите вытащить ссылки которые генерятся javascript


Браво, эта замечательная мысль придется как раз кстати
 
Верх