Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Как вытащить скриптом часть текста?  (Прочитано 3069 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн E

  • Автор темы
  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Как вытащить скриптом часть текста?
« : 22 Сентября 2010, 16:33:11 »
Не иначе, как доброе время суток, :)

ищу способ (хотелось бы создать скрипт), для вытаскивания части текста из файлов. К примеру, есть файл .html с беспорядочным содержимым:
(Нажмите, чтобы показать/скрыть)

В спойлере я выделил 4 нужные строчки. Нужно вытащить выражение меж апострофами, т.е. http://site.ru/gfgfg/28b93fa13bc6.bmp, и др.

Взять все 4 выражения, и поставить их перед wget, чтобы получилосьgwet http://site.ru/gfgfg/28b93fa13bc6.bmp http://site.ru/gfgfg/28b93fddda13bc6.bmp http://site.ru/gfgfg/28b93fdfghha13bc6.bmp http://site.ru/gfgfg/28blkfk93fa13bc6.bmp
Lenovo E520
Arch x64

Оффлайн Дмитрий Бо

  • Погонщик серверов
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 3549
  • Я не техподдержка, я за порядком слежу
    • Просмотр профиля
Re: Как вытащить скриптом часть текста?
« Ответ #1 : 22 Сентября 2010, 16:41:36 »
Навскидку как-то так:
wget исходная_страница.html | grep '<img class="playimg" onclick="return operate' | grep http*bmp -o | wget
Не тестил, кавычки не разруливал.

Бэкслешей понавтыкай.
« Последнее редактирование: 22 Сентября 2010, 16:43:08 от Дмитрий Бо »

Оффлайн dieselist

  • Активист
  • *
  • Сообщений: 525
    • Просмотр профиля
    • diesel.pp.ua
Re: Как вытащить скриптом часть текста?
« Ответ #2 : 22 Сентября 2010, 17:06:32 »
Доведу вариант Дмитрия Бо до ума :)

wget исходная_страница.html -O - | grep '<img class="playimg" onclick="return operate' | grep -o 'http.*bmp' | wget -i -
Ubuntu, Gentoo, RHEL, AIX

Оффлайн Дмитрий Бо

  • Погонщик серверов
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 3549
  • Я не техподдержка, я за порядком слежу
    • Просмотр профиля
Re: Как вытащить скриптом часть текста?
« Ответ #3 : 22 Сентября 2010, 17:17:37 »
.*да, вот тут мне не стоило ошибаться

Оффлайн E

  • Автор темы
  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: Как вытащить скриптом часть текста?
« Ответ #4 : 22 Сентября 2010, 17:34:21 »
:) дело еще в том, что при wget нужно авторизоваться. Речь идет о vkon...ru/audio.php. Так что я пока думал скачать исходник, на винт, и уже там его обработать скриптом.
Lenovo E520
Arch x64

Оффлайн dieselist

  • Активист
  • *
  • Сообщений: 525
    • Просмотр профиля
    • diesel.pp.ua
Re: Как вытащить скриптом часть текста?
« Ответ #5 : 22 Сентября 2010, 17:41:04 »
ну, сам-то предложенный вариант до нужного уже довести сможешь? :)
Ubuntu, Gentoo, RHEL, AIX

Оффлайн Дмитрий Бо

  • Погонщик серверов
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 3549
  • Я не техподдержка, я за порядком слежу
    • Просмотр профиля
Re: Как вытащить скриптом часть текста?
« Ответ #6 : 22 Сентября 2010, 17:46:30 »
:) дело еще в том, что при wget нужно авторизоваться. Речь идет о vkon...ru/audio.php.
Если логин/пароль через GET, тогда мало что изменится. Else, используй curl.

Оффлайн E

  • Автор темы
  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: Как вытащить скриптом часть текста?
« Ответ #7 : 22 Сентября 2010, 18:07:05 »
ну, сам-то предложенный вариант до нужного уже довести сможешь? :)
Цитировать
Если логин/пароль через GET, тогда мало что изменится. Else, используй curl.

Ну как-бы так сразу не смогу, но вскоре разберусь. В инете полно наглядных примеров, так что наверно осилю.

Всем большое спасибо!

Кстати..  :) Может у кого в закладках найдется толковая ссылка по curl? Так сказать учебное пособие...
Еще иначе - может у кого пример есть? Потому, что я уже не представляю, как это будет работать. Ведь наш скрипт обработки текста и скачивание это bash, а curl статьи относятся к PHP..  ???
« Последнее редактирование: 22 Сентября 2010, 18:53:49 от E »
Lenovo E520
Arch x64

Оффлайн truegeek

  • FPGA Designer
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4214
  • аЦкий схемотехник
    • Просмотр профиля
Re: Как вытащить скриптом часть текста?
« Ответ #8 : 22 Сентября 2010, 19:06:43 »
curl статьи относятся к PHP
кто вам это сказал? существует отдельная утилита curl ;)

Оффлайн E

  • Автор темы
  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: Как вытащить скриптом часть текста?
« Ответ #9 : 22 Сентября 2010, 19:50:14 »
curl статьи относятся к PHP
кто вам это сказал? существует отдельная утилита curl ;)
Да все вроде к тому и идет. Читаю на пример http://www.cusok.ru/new548.htm, и не понимаю как связать bash и php скрипты.

А сказал... интернет :) man curl вывел очень много текста. А я как-то предпочитаю на примерах учиться, вот и пошел в инет. :)

И все-же, может правильной ссылкой поможете? :)
Lenovo E520
Arch x64

Оффлайн truegeek

  • FPGA Designer
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4214
  • аЦкий схемотехник
    • Просмотр профиля

Оффлайн E

  • Автор темы
  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: Как вытащить скриптом часть текста?
« Ответ #11 : 23 Сентября 2010, 21:22:49 »
Еще к теме - помогите вытащить содержимое value
(Нажмите, чтобы показать/скрыть)

Может с  awk? :)


Спасибо
« Последнее редактирование: 23 Сентября 2010, 21:53:07 от E »
Lenovo E520
Arch x64

Оффлайн dieselist

  • Активист
  • *
  • Сообщений: 525
    • Просмотр профиля
    • diesel.pp.ua
Re: Как вытащить скриптом часть текста?
« Ответ #12 : 23 Сентября 2010, 22:06:38 »
echo "<input type='hidden' name='s' value='55d7803305fa4c7beec1a51a0bb1f614067f119567a623f1f9ae8a25' />" | tr -d \' | sed -e "s/.*value=\(.*\)\ .*/\1/"
так понятно?

можешь и с awk сделать если знаешь его лучше, но, имхо, sed в данном случае удобнее ;)
Ubuntu, Gentoo, RHEL, AIX

Оффлайн E

  • Автор темы
  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: Как вытащить скриптом часть текста?
« Ответ #13 : 23 Сентября 2010, 22:49:12 »
Всем спасибо. В итоге получилось вот так:#!/bin/bash
gs=`curl -s --data "email=edps.my@gmail.com&pass=пароль" http://login.vk.com/?act=login | egrep -o \([a-z]\|[0-9]\){20\,}`
curl -v --cookie-jar /tmp/vkcookie --data "s=$gs&op=slogin&redirect=1&expire=0&to=0" http://vkontakte.ru/login.php
curl -v --cookie /tmp/vkcookie http://vkontakte.ru/audio.php | grep -o 'http.*mp3' | wget -i -   
Lenovo E520
Arch x64

 

Страница сгенерирована за 0.019 секунд. Запросов: 22.