Керл Комплекс с Баш - PullRequest
       3

Керл Комплекс с Баш

0 голосов
/ 09 апреля 2011

Небольшое примечание: я удалил http: // из каждой ссылки, потому что stackoverflow не позволяет мне публиковать его оригинальным способом. Я написал скрипт для доступа к веб-странице, чтобы перехватить URL-адрес и загрузить его. Один из URL-адресов делает curl перестать работать, и все URL-адреса в списке к тому же. Сценарий работает следующим образом: -

PAGE=$(curl -sL pageurl)
FILE_URL=$(echo $PAGE | sed -e 's/^.*<a href=\"\(.*\)\">\(.*\) alt="File" \/><\/a>.*$/\1/')

Значение FILE_URL равно

URL/files/PartOne - Booke (Coll).pdf
webprod25.megashares.com/index.php?d01=3109985&lccdl=9e8e091ef33dd103&d01go=1&fln=/adobe reader exe.rar

И ТАК Один для других

Когда curl попытался поймать этот URL, он показывает следующую ошибку, используя режим отладки bash

++ curl -sOL 'webprod37.megashares.com/index.php?d01=3109985&lccdl=9e8e091ef33dd103&d01go=1&fln=/adobe' reader exe.rar fileshare273.depositfiles.com/auth-13023763920cd7ec18a0fdbfa8b62d35-188.165.197.50-43792102-7713641/FS273-7/PageMaker.rar -sOLJg fileshare601.depositfiles.com/auth-1302376689013d421df6c01e7f64c8d2-188.165.197.50-43801594-82379659/FS601-2/Adobe_Flash_Player_v10.3.180.65.2.rar -sOLJg 'webprod37.megashares.com/index.php?d01=de48789&lccdl=9e8e091ef33dd103&d01go=1&fln=/KAZAMIZA.COM.Adobe.Flash' Player-10.3.180.65.Beta-2.JUDGMENT DAY.rar bellatrix.oron.com/spzsttzwytpflwd76j3ne2moukomuhcdxg6llddfztqa2ztd7cplwwp457h3mxuacq3pbxzs/An-Beat - Mentally Insine '(Original' 'Mix).mp3'
curl: option -: is unknown

curl: try 'curl --help' or 'curl --manual' for more information

В кавычках помечено, что curl поместил его сам, я пытался сделать некоторые обходные пути, такие как экранирование url, но это не работает.

Ответы [ 2 ]

1 голос
/ 10 апреля 2011

Основная проблема в том, что вы используете расширение $ () для чего-то, что выглядит для меня как многострочное значение. Вы должны попытаться перебрать каждую строку.

Другая проблема похожа на проблему неправильного цитирования URL-адресов, содержащих пробелы. В «An-Beat - Психически безумие» есть одинокая черта (-)

О, еще одна проблема: часть sed для перехвата содержимого href = "..." работает, только если в строке ровно один href. Если их два или более, ваш \(.*\) будет соответствовать всему остальному до последнего href. Вы должны использовать что-то вроде href="\([^"]*\)", сопоставляя «любое количество не двойных кавычек, за которыми следует двойная кавычка».

0 голосов
/ 10 апреля 2011

Заключите в кавычки свои переменные как в:

pageurl='the url'
PAGE=$(curl -sL "$pageurl")
FILE_URL=$(echo "$PAGE" | sed -e 's/^.*<a href=\"\(.*\)\">\(.*\) alt="File" \/><\/a>.*$/\1/')

В противном случае произойдет расширение оболочки.Ошибка «опция -: неизвестно» происходит из последней части:

An-Beat - Mentally Insine

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...