Войти

Показать полную графическую версию : [решено] как сохранить с помощью save2go.ru МНОГО ссылок?


Страниц : [1] 2

shadowbat
21-08-2010, 14:36
как сохранить с помощью save2go.ru МНОГО ссылок?

есть 800 ссылок на страницы с флэш-видео. (не ютуб и не прочие социалки)
по одной ссылке доставать через сайт тяжко
как все 800 ссылок пропустить списком через сайт и получить список прямых ссылок?

как это можно реализовать через AutoIt ?

Creat0R
21-08-2010, 15:57
как это можно реализовать через AutoIt ? »
Можно попробовать посылать запрос «http://save2go.ru/parse/?url=тут ссылка».

P.S
Есть сервис получше (http://ru.savefrom.net) для этого, он извлекает все возможные флэш-ссылки на странице.

madmasles
21-08-2010, 16:16
shadowbat,
Так можно попробовать:#include <IE.au3>
#include <Array.au3>

Dim $aUrl[3] = ['http://mult.ru/projects/mas/mults/mult_7.html', _
'http://mult.ru/projects/mas/mults/mult_8.html', _
'http://mult.ru/projects/mas/mults/mult_9.html']
Dim $aLinks[1][3]
$j = 0
$oIE = _IECreate('http://save2go.ru/')

For $i = 0 To UBound($aUrl) - 1
$oForm = _IEFormGetCollection($oIE, 0)
$oInput = _IEFormElementGetObjByName($oForm, 'url')
_IEFormElementSetValue($oInput, $aUrl[$i])
_IEFormSubmit($oForm)
$oDiv = _IEGetObjById($oIE, 'pageFiles')
$j += 1
ReDim $aLinks[UBound($aLinks) + 1][3]
$aLinks[$j][0] = $aUrl[$i]
$aLinks[$j][1] = _IEPropertyGet($oIE, 'locationurl')
$aLinks[$j][2] = StringRegExpReplace(_IEPropertyGet($oDiv, 'innerhtml'), '(?s).*?target=_blank>(http://.*?)</A></B>?.*', '\1')
Next
_IEQuit($oIE)
$aLinks[0][0] = UBound($aLinks) - 1
_ArrayDisplay($aLinks)

Creat0R
21-08-2010, 16:46
Так можно попробовать »
Для этого IE не нужен:

#include (http://www.autoitscript.com/autoit3/docs/keywords.htm##include) <Array.au3>

Dim (http://www.autoitscript.com/autoit3/docs/keywords.htm#Dim) $aUrl[4] = [3, _
'http://mult.ru/projects/mas/mults/mult_7.html', _
'http://mult.ru/projects/mas/mults/mult_8.html', _
'http://mult.ru/projects/mas/mults/mult_9.html']

Dim (http://www.autoitscript.com/autoit3/docs/keywords.htm#Dim) $aLinks[$aUrl[0]+1]
$aLinks[0] = $aUrl[0]

For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $i = 1 To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) $aUrl[0]
$sHtml = BinaryToString (http://www.autoitscript.com/autoit3/docs/functions/BinaryToString.htm)(InetRead (http://www.autoitscript.com/autoit3/docs/functions/InetRead.htm)("http://save2go.ru/parse/?url=" & $aUrl[$i]))
$aLinks[$i] = StringRegExpReplace (http://www.autoitscript.com/autoit3/docs/functions/StringRegExpReplace.htm)($sHtml, '(?s).*?<b><a href="(.*?)" target="_blank" onclick=".*">.*</a>.*', '\1')
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)

_ArrayDisplay (http://dundats.mvps.org/help/html/libfunctions/_arraydisplay.htm)($aLinks)

shadowbat
21-08-2010, 16:51
Creat0R
1. немного не понял, что имелось ввиду.
по Вашей ссылке Невозможно получить данные со страницы сайта
если Вы предлагаете руками забивать все адреса, то это невозможно.

2. по поводу сервиса "получше" - к сожалению он ничего не находит по скармливаемым ссылкам. а save2go дает реальную ссылку на ролик.

3. madmasles отличное решение!
только результат выдается вот так:
http://www.site.ru/...s/video/0001.f4v, т.е. урезанно.
как это вылечить?

пробовал сократить табличку для вывода
For $i = 0 To UBound($aUrl) - 1
$oForm = _IEFormGetCollection($oIE, 0)
$oInput = _IEFormElementGetObjByName($oForm, 'url')
_IEFormElementSetValue($oInput, $aUrl[$i])
_IEFormSubmit($oForm)
$oDiv = _IEGetObjById($oIE, 'pageFiles')
$j += 1
ReDim $aLinks[UBound($aLinks) + 1][3]
$aLinks[$j][2] = StringRegExpReplace(_IEPropertyGet($oDiv, 'innerhtml'), '(?s).*?target=_blank>(http://.*?)</A></B>?.*', '\1')
Next
_IEQuit($oIE)
$aLinks[0][0] = UBound($aLinks) - 1
_ArrayDisplay($aLinks)
но все хоть и количество выдаваемых столбцов уменьшилось с 3х до 1го. все равно сама таблица имеет формат 3х3, а самое главное - выходная ссылка видимо длинная или как... выдается в таком урезанном формате
http://www.site.ru/...s/video/0001.f4v
________________________________________________
4. Creat0R - как раз то, что нужно. ссылка получается полная, только перед ней ставится колонка Row
[2]|http://www....
как ее удалить, чтобы для копирования осталась чистая ссылка? (конечно можно и в ворде через замену :) но для чистоты эксперимента по=хорошему нужно здесь)

P.S. получился мини-парсер (сегодня узнал это слово) - мне кажется отличный вариант :)

madmasles
21-08-2010, 16:51
Creat0R,
Согласен, с Вашим вариантом все это сделать можно гораздо быстрее и удобнее. :)


shadowbat,
В моем варианте попробуйте заменить эту строку:$aLinks[$j][2] = StringRegExpReplace(_IEPropertyGet($oDiv, 'innerhtml'), '(?s).*?href="(http://.*?)"\n?.*', '\1')Но я бы на Вашем месте воспользовался вариантом Creat0R`a.

Creat0R
21-08-2010, 17:15
по Вашей ссылке »
Это был пример, вместо «тут ссылка» нужно подставить ссылку страницы с флэшками.

по поводу сервиса "получше" - к сожалению он ничего не находит по скармливаемым ссылкам »
Пример можно этих ссылок?

перед ней ставится колонка »
Это только при отображений, в массиве то их нет, вам нужно копировать список сразу в буфер? тогда так:

Dim (http://www.autoitscript.com/autoit3/docs/keywords.htm#Dim) $aUrl[4] = [3, _
'http://mult.ru/projects/mas/mults/mult_7.html', _
'http://mult.ru/projects/mas/mults/mult_8.html', _
'http://mult.ru/projects/mas/mults/mult_9.html']

$sLinks = ""

For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $i = 1 To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) $aUrl[0]
$sHtml = BinaryToString (http://www.autoitscript.com/autoit3/docs/functions/BinaryToString.htm)(InetRead (http://www.autoitscript.com/autoit3/docs/functions/InetRead.htm)("http://save2go.ru/parse/?url=" & $aUrl[$i]))
$sLinks &= StringRegExpReplace (http://www.autoitscript.com/autoit3/docs/functions/StringRegExpReplace.htm)($sHtml, '(?s).*?<b><a href="(.*?)" target="_blank" onclick=".*">.*</a>.*', '\1') & @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@crlf)
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)

ClipPut (http://www.autoitscript.com/autoit3/docs/functions/ClipPut.htm)(StringStripWS (http://www.autoitscript.com/autoit3/docs/functions/StringStripWS.htm)($sLinks, 3))

madmasles
21-08-2010, 17:18
Только перед ней ставится колонка Row
[2]|http://www.... »Или для сохранения в файл добавьте вначале скрипта #include <File.au3>, а в конце _FileWriteFromArray(@ScriptDir & '\MySuperLinks.txt', $aLinks, 1)

shadowbat
21-08-2010, 17:23
Пример можно этих ссылок?
http://www.teachvideo.ru/v/5471
http://iqcomp.ru/v/e2545

Отлично! благодарю за помощь! итого получилось 2 решения:
сохранение ссылок в буфер обмена:

Dim $aUrl[4] = [3, _
'http://mult.ru/projects/mas/mults/mult_7.html', _
'http://mult.ru/projects/mas/mults/mult_8.html', _
'http://mult.ru/projects/mas/mults/mult_9.html']

$sLinks = ""

For $i = 1 To $aUrl[0]
$sHtml = BinaryToString(InetRead("http://save2go.ru/parse/?url=" & $aUrl[$i]))
$sLinks &= StringRegExpReplace($sHtml, '(?s).*?<b><a href="(.*?)" target="_blank" onclick=".*">.*</a>.*', '\1') & @CRLF
Next

ClipPut(StringStripWS($sLinks, 3))


сохранение ссылок в файл:

#include <File.au3>
#include <Array.au3>

Dim $aUrl[4] = [3, _
'http://mult.ru/projects/mas/mults/mult_7.html', _
'http://mult.ru/projects/mas/mults/mult_8.html', _
'http://mult.ru/projects/mas/mults/mult_9.html']

Dim $aLinks[$aUrl[0]+1]
$aLinks[0] = $aUrl[0]

For $i = 1 To $aUrl[0]
$sHtml = BinaryToString(InetRead("http://save2go.ru/parse/?url=" & $aUrl[$i]))
$aLinks[$i] = StringRegExpReplace($sHtml, '(?s).*?<b><a href="(.*?)" target="_blank" onclick=".*">.*</a>.*', '\1')
Next

_ArrayDisplay($aLinks)
_FileWriteFromArray(@ScriptDir & '\MySuperLinks.txt', $aLinks, 1)

Creat0R
21-08-2010, 18:01
сохранение ссылок в файл »
Зачем городить огород:

Dim (http://www.autoitscript.com/autoit3/docs/keywords.htm#Dim) $aUrl = StringSplit (http://www.autoitscript.com/autoit3/docs/functions/StringSplit.htm)( _
'http://iqcomp.ru/v/e2545|' & _
'http://teachvideo.ru/v/5471', _
'|')

$sLinks = ""

For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $i = 1 To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) $aUrl[0]
$sHtml = BinaryToString (http://www.autoitscript.com/autoit3/docs/functions/BinaryToString.htm)(InetRead (http://www.autoitscript.com/autoit3/docs/functions/InetRead.htm)("http://save2go.ru/parse/?url=" & $aUrl[$i]))
$sLinks &= StringRegExpReplace (http://www.autoitscript.com/autoit3/docs/functions/StringRegExpReplace.htm)($sHtml, '(?s).*?<b><a href="(.*?)" target="_blank" onclick=".*">.*</a>.*', '\1') & @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@crlf)
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)

$sLinks = StringStripWS (http://www.autoitscript.com/autoit3/docs/functions/StringStripWS.htm)($sLinks, 3)

;В буфер обмена
ClipPut (http://www.autoitscript.com/autoit3/docs/functions/ClipPut.htm)($sLinks)

;В файл
FileWrite (http://www.autoitscript.com/autoit3/docs/functions/FileWrite.htm)(@ScriptDir (http://www.autoitscript.com/autoit3/docs/macros.htm#@scriptdir) & '\MySuperLinks.txt', $sLinks)

правда что то я не расмотрел там 800 ссылок :)

shadowbat
21-08-2010, 18:26
правда что то я не расмотрел там 800 ссылок
на одном 1990 ссылок, на втором около 3000 ссылок
главное, что нашли решение - уверен не только мне пригодится, ибо я в сети ничего подходящего за день не нашел. благо OAC облегчает копирование самих ссылок со страниц :bow:

shadowbat
22-08-2010, 14:49
Dim $aUrl = StringSplit( _
'http://iqcomp.ru/v/e2545|' & _
'http://teachvideo.ru/v/5471', _
'|')

$sLinks = ""

For $i = 1 To $aUrl[0]
$sHtml = BinaryToString(InetRead("http://save2go.ru/parse/?url=" & $aUrl[$i]))
$sLinks &= StringRegExpReplace($sHtml, '(?s).*?<b><a href="(.*?)" target="_blank" onclick=".*">.*</a>.*', '\1') & @CRLF
Next

$sLinks = StringStripWS($sLinks, 3)

;В буфер обмена
ClipPut($sLinks)

;В файл
FileWrite(@ScriptDir & '\MySuperLinks.txt', $sLinks)



тяжко забивать все ссылки
как сделать, чтобы ссылки брались из txt-списка? (в той же папке, где сам .au3 находится)

madmasles
22-08-2010, 14:59
shadowbat,
Пример файла со списком ссылок приведите.

shadowbat
22-08-2010, 15:03
обычный файл

madmasles
22-08-2010, 15:29
shadowbat,
Попробуйте так:#include <Array.au3>

Dim $aUrl[1]
$j = 0
$sFile = @ScriptDir & '\list.txt'

$hFile = FileOpen($sFile, 0)
$sText = FileRead($hFile)
FileClose($hFile)

$aUrlTemp = StringSplit($sText, @LF)

For $i = 1 To $aUrlTemp[0]
If StringInStr($aUrlTemp[$i], 'http:') Then
$j += 1
ReDim $aUrl[UBound($aUrl) + 1]
$aUrl[$j] = StringStripWS(StringStripCR($aUrlTemp[$i]), 8)
EndIf
Next
$aUrl[0] = UBound($aUrl) - 1
_ArrayDisplay($aUrl)

Creat0R
22-08-2010, 15:35
как сделать, чтобы ссылки брались из txt-списка? »
Dim $aUrl = StringSplit(StringStripCR(FileRead(@ScriptDir & "\List.txt")), @LF)

madmasles
22-08-2010, 15:49
Creat0R,
А если есть пустые строки или случайные пробелы в ссылках или в конце строки со ссылкой?
Как-то , наверное, можно ссылки через StringRegExp() выдрать.

shadowbat
22-08-2010, 16:02
1. http://static.rutracker.org/smiles/ges_slap.gif я неправильный список дал, уже с готовыми ссылками, а не с первичными. правильный прикрепил

2. madmasles, я не те ссылки дал, ваш скрипт их просто копирует в окошко и выдает пользователю, не пропуская их через сайт :)
нужен ведь аналог этого,

Dim $aUrl = StringSplit( _
'http://iqcomp.ru/v/e2545|' & _
'http://teachvideo.ru/v/5471', _
'|')

$sLinks = ""

For $i = 1 To $aUrl[0]
$sHtml = BinaryToString(InetRead("http://save2go.ru/parse/?url=" & $aUrl[$i]))
$sLinks &= StringRegExpReplace($sHtml, '(?s).*?<b><a href="(.*?)" target="_blank" onclick=".*">.*</a>.*', '\1') & @CRLF
Next

$sLinks = StringStripWS($sLinks, 3)

;В буфер обмена
ClipPut($sLinks)

;В файл
FileWrite(@ScriptDir & '\MySuperLinks.txt', $sLinks)

только с забором ссылок для посылки на сайт не из самого тела скрипта, а из внешнего файла. что похоже и сделал Creat0R

3. Creat0R
подставил строку,

Dim $aUrl = StringSplit(StringStripCR(FileRead(@ScriptDir & "\List.txt")), @LF)

$sLinks = ""

For $i = 1 To $aUrl[0]
$sHtml = BinaryToString(InetRead("http://save2go.ru/parse/?url=" & $aUrl[$i]))
$sLinks &= StringRegExpReplace($sHtml, '(?s).*?<b><a href="(.*?)" target="_blank" onclick=".*">.*</a>.*', '\1') & @CRLF
Next

$sLinks = StringStripWS($sLinks, 3)

;В буфер обмена
ClipPut($sLinks)

;В файл
FileWrite(@ScriptDir & '\MySuperLinks.txt', $sLinks)


выдается странный MySuperLinks.txt в итоге. прикрепил к сообщению
(похоже копирует код html странички. в принципе можно брать из него ссылки из самого начала, а остальной код удалять :))

Creat0R
22-08-2010, 16:07
Как-то , наверное, можно ссылки через StringRegExp() выдрать. »
Dim (http://www.autoitscript.com/autoit3/docs/keywords.htm#Dim) $aUrl = StringSplit (http://www.autoitscript.com/autoit3/docs/functions/StringSplit.htm)(StringStripWS (http://www.autoitscript.com/autoit3/docs/functions/StringStripWS.htm)(StringRegExpReplace (http://www.autoitscript.com/autoit3/docs/functions/StringRegExpReplace.htm)(FileRead (http://www.autoitscript.com/autoit3/docs/functions/FileRead.htm)(@ScriptDir (http://www.autoitscript.com/autoit3/docs/macros.htm#@scriptdir) & "\List.txt"), '(?s).*?(https?://.*?)\r?\n.*?', '\1' & @LF (http://www.autoitscript.com/autoit3/docs/macros.htm#@lf)), 3), @LF (http://www.autoitscript.com/autoit3/docs/macros.htm#@lf))

выдается странный MySuperLinks.txt в итоге »
Там видимо содержимое страницы, можно добавить “предохранитель” от подобных ситуаций:

Dim (http://www.autoitscript.com/autoit3/docs/keywords.htm#Dim) $aUrl = StringSplit (http://www.autoitscript.com/autoit3/docs/functions/StringSplit.htm)(StringStripWS (http://www.autoitscript.com/autoit3/docs/functions/StringStripWS.htm)(StringRegExpReplace (http://www.autoitscript.com/autoit3/docs/functions/StringRegExpReplace.htm)(FileRead (http://www.autoitscript.com/autoit3/docs/functions/FileRead.htm)(@ScriptDir (http://www.autoitscript.com/autoit3/docs/macros.htm#@scriptdir) & "\List.txt"), '(?s).*?(https?://.*?)\r?\n.*?', '\1' & @LF (http://www.autoitscript.com/autoit3/docs/macros.htm#@lf)), 3), @LF (http://www.autoitscript.com/autoit3/docs/macros.htm#@lf))

$sLinks = ""

For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $i = 1 To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) $aUrl[0]
$sHtml = BinaryToString (http://www.autoitscript.com/autoit3/docs/functions/BinaryToString.htm)(InetRead (http://www.autoitscript.com/autoit3/docs/functions/InetRead.htm)("http://save2go.ru/parse/?url=" & $aUrl[$i]))
$sLink = StringRegExpReplace (http://www.autoitscript.com/autoit3/docs/functions/StringRegExpReplace.htm)($sHtml, '(?s).*?<b><a href="(.*?)" target="_blank" onclick=".*">.*</a>.*', '\1')

If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) @extended (http://www.autoitscript.com/autoit3/docs/macros.htm#@extended) > 0 And (http://www.autoitscript.com/autoit3/docs/keywords.htm#And) $sLink <> $sHtml Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
$sLinks &= $sLink & @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@crlf)
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)

$sLinks = StringStripWS (http://www.autoitscript.com/autoit3/docs/functions/StringStripWS.htm)($sLinks, 3)

;В буфер обмена
ClipPut (http://www.autoitscript.com/autoit3/docs/functions/ClipPut.htm)($sLinks)

;В файл
FileWrite (http://www.autoitscript.com/autoit3/docs/functions/FileWrite.htm)(@ScriptDir (http://www.autoitscript.com/autoit3/docs/macros.htm#@scriptdir) & '\MySuperLinks.txt', $sLinks)

shadowbat
22-08-2010, 16:14
Creat0R
Благодарю! http://files.myopera.com/Creat0R/Opera_AC/Icons/yes_cool.gif то, что нужно




© OSzone.net 2001-2012