download.bg
 Вход Списание  Новини  Програми  Статии  Форум  Чат   Абонамент  Топ95   Архив 

UnxUtils инструментите wget, grep и sed за извличане на данни от външен сайт. Моля за помощ!

< 1 2 >

Автор
Съобщение
phrozencrew
Съб, 24.01.09, 21:20
Здравейте приятели,
Опитвам се само с UnxUtils да извлеча данни от определен сайт без да отварям браузера. Използвам регулярни изрази и споменатите инструменти от пакета, но на едно място не мога да се сетя как да премахна табулациите. Това ми трябва, защото се опитвам да напиша OpenSource скрипт за Windows, който да се стартира от компилирана програма. Това е само една от опциите на програмата.
Ще дам един пример кое ме затруднява. Примерно искам да извлеча прогнозата за времето от сайта на BTV без да се отваря какъвто и да било браузер. Всичко си става идеално с wget -O -. Обаче при обработката и изхвърлянето на данните нещо табулациите не мога да схвана как да ги затрия.
Използвам ето този команден низ:
wget -O - http://www.btv.bg/weather/ | grep "\t*<p>" | grep -v "<p><a.*" | grep -v "<p>$" | sed "s/<p>//" | sed "s/<\/p>$//"

И за днешна дата се получава:

Цитат
” През следващото денонощие времето ще бъде облачно, влажно и по-топло от обичайното за сезона. На много места ще превали дъжд. В източните райони ще духа слаб, северно от планините и по Черноморието, до умерен югоизточен, по-късно през деня югозападен вятър. Минималните температури ще бъдат между 2 и 7, максималните – между 7 и 12 градуса, на отделни места в южните и в югоизточните райони, където са възможни и временни разкъсвания на облачността, до 16-18 градуса. По Черноморието облачността ще е значителна и също ще превали дъжд. Ще духа до умерен отначало югоизточен, а по-късно през деня югозападен вятър. Максималните температури на въздуха ще са между 13 и 18 градуса.</p><p>Атмосферното налягане ще се задържи значително по-ниско от средното за месеца, но към края на деня ще започне да се повишава. „
редактиран от phrozencrew на 24.01.09 21:21
phrozencrew
Съб, 24.01.09, 21:29
Основния проблем са табулациите. Иначе виждам, че в цитата седят и параграфи <p></p>, но тях мога да ги разкарам.
anonymous
Нед, 25.01.09, 15:51
He cъм сигурен, че това са табулатори ( \t ).
wget cu uма html parser. Явно Non-Breaking SPace ( nbsp ) ce преобразува, а с опция -О го извежда към stdout.
stdout има ограничения за броя символи на ред /доколкото си спомням/ и затова пренася на нов ред.
Свали си го до файл и парсни за \t
k®k®5
phrozencrew
Нед, 25.01.09, 16:39
Хм... Възможно е и да не са табулатори и смотаният stdout на Win-а да ги преобразува в такива. Когато изведа stdout до файл ги виждам като табулатори. Малко променен скрипта:
wget -q -O - http://www.btv.bg/weather/ | grep "\t*<p>" | grep -E -v "<p><a.*|<p>$" | sed "s/<p>//" | sed "s/<\/p>$//" > hhh.txt

Защо не мога да ги прихвана от стандартния output като "\t"? F*ck!
Пробвах и с gawk, но и там ударих на камък. koko5, почти съм сигурен, че си прав, за това, че се получава някъде преобразуване. Но къде точно....

phrozencrew
Пет, 30.01.09, 20:34
Разбрах, че грешката не е в моя телевизор. Тоя sed_for_windows.zip от пакета GnuWin32 обработва табулациите правилно!
phrozencrew
Съб, 31.01.09, 18:56
Този скрипт нямаше тази цел, но, тъй като скрипта е бил интересен за някои хора, които ми писаха. Реших да го развия и да показва наистина времето. Ето тези два файла трябва са в една директория:
wreme.bat
wreme.vbs
При стартиране на vbs-файла ще се покаже текущата прогноза:

За да се изпълни този скрипт трябва да имате копирани в C:\Windows\system32\ следните файлове:
sed_wget_and_grep_for_windows.zip
Това е много груба вариант, който може да се замени с всеки съвременен език. Но пък тук много хора разбират от batch и VBS. Дано сорса им е полезен.

танясекс
Съб, 31.01.09, 20:04
Заслужаваш един поклон ...мн яко се е получило .

Надявам се все така да споделяш с нас идеите си

zlatena
Пон, 02.02.09, 11:55
phrozencrew ... поздравления,интересно е...
Дали ще мога след като се логна при download.bg да извлека в текстов файл всичките си мнения от форума например?
phrozencrew
Пон, 02.02.09, 12:16

RE: UnxUtils инструментите wget, grep и sed за извличане на данни от външен сайт. Моля за помощ!

phrozencrew ... поздравления,интересно е...
Дали ще мога след като се логна при download.bg да извлека в текстов файл всичките си мнения от форума например? „
Да, ще можеш, но тогава трябва да работиш с курабийки и сесии. Най-лесно може да стане като се логнеш чрез WWW-Mechanize. Тогава ще можеш да натискаш бутони и линкове и да попълваш полета за логин и т.н.
Без по-сериозно програмиране няма да стане, но пък примери има бол.
zlatena
Пон, 02.02.09, 12:22
Мерси за насоките.

< 1 2 >

Коментар

за нас | за разработчици | за реклама | станете автори | in english  © 1998-2024   Experta Ltd.