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

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

<1 2 >

Автор
Съобщение
anonymous
Пет, 06.02.09, 13:37
@phrozencrew Защо не си направиш една php страничка дето да извлича това инфо... даже като rss?

Вариант 2:
Въпросната страница парсва прогнозата и връща:
- content plain text;
- no cache;
- проста програма /писана на каквото и да е/, която отваря адреса вече на твоята страница URLDownloadToFile

Без wget за Win и др. подобни ментета изцяло Made In Bulgaria

phrozencrew
Пет, 06.02.09, 16:57
koko5, преди време с Ганчо бяхме коментирали подобен скрипт на PHP пак за времето. Определено е много по-лесно човек да си напише семпла програмка на PHP, че дори може и да си я компилира (без ембедване и подобни пакетажи, а чисто битово компилиране) с Roadsend PHP Compiler
Но някак си много ми липсват конзолните инструменти от Linux/Unix, а и изпитвам истинско удоволствие да ги ползвам. Нали знаеш, че някои хора правят с любов това, което други хора не биха правили и за пари .

Изключително много благодаря за функциятаURLDownloadToFile! Довечера ще проверя дали мога да я ползвам с FreeBasic. Мисля, че ще ми свърши добра работа.

anonymous
Пет, 06.02.09, 17:07
За нищо

Само да вметна, че в коментарите от горния линк е отбелязана DeleteUrlCacheEntry във връзка с кеша!

insecteater
Пет, 06.02.09, 17:15
Да вметна - варианта с php + компилатор ми се струва един от най тромавите съществуващи начини, а пък тази заигравка на phrozen може да намери и други интересни, бързи и неангажиращи прилoжения.
phrozencrew
Пет, 06.02.09, 20:17
Намерих аз, ама е истинско съкровище, каквото си е и под Linux/Unix. Обновената версия на grep за пакета UnxUtils , която поддържа опцията -P или използване на Perl-съвместими регулярни изрази. Мед ми капе на душата като видя, че мога да ползвам Perl regex-ите!. Колко лесно става получаването на реда с прогнозата (както си е в истинските ОС-ми):
wget -O - -q http://www.btv.bg/weather/ | grep.exe -P "^\t+\<p>.*"

Опцията за wget -q е за да каже на промпта да не изписва никакви "технически данни" за процеса на свалянето на текста.

zlatena
Пет, 06.02.09, 21:53

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

” Да вметна - варианта с php + компилатор ми се струва един от най тромавите съществуващи начини, а пък тази заигравка на phrozen може да намери и други интересни, бързи и неангажиращи прилoжения.
Дай пример за неангажиращо приложение
редактиран от zlatena на 06.02.09 22:54
редактиран от zlatena на 06.02.09 22:57
anonymous
Пет, 06.02.09, 23:37
@insecteater Имах предвид да сложи нещо такова на свой хостинг и после просто дърпа текста от новия адрес:
<?php
 
class weatherHack{
	private static $url;
	private static $regpattern='/<p>(.*)<\/p>/Us';
	private static $StringToParse;
	
	public function __construct($s='http://www.btv.bg/weather/',$level=0){
		error_reporting($level);
		if (!empty($s)) self::$url=$s;
	}	
	
	public static final function getHTML(){
	$f=fopen(self::$url,"r") or exit(1);
	self::$StringToParse=stream_get_contents($f);
	fclose($f);
	}
	
	public function _Display(){
		$arr=array();
		if (empty(self::$StringToParse)) self::getHTML();
		preg_match_all(self::$regpattern,self::$StringToParse,&$arr,PREG_SET_ORDER);
		$s='Прогнозата днес:';
		if (count($arr[0])) $s .= strip_tags(html_entity_decode($arr[0][0],ENT_QUOTES,'cp1251'));
		if (count($arr[1])) $s .= strip_tags(html_entity_decode($arr[1][0],ENT_QUOTES,'cp1251'));
		if (!headers_sent()){
			header("Content-type:text/plain;charset=windows-1251");
			header("Cache-Control: no-cache, must-revalidate");
			} 
		echo $s;
		return true;
	}
	
	public static final function GetURL(){
		return self::$url;
	}
 
	public static final function SetURL($s=''){
		if (empty($s)) return false;
		self::$url=$s;
		return true;
	}
 
	public static final function Setregpattern($s=''){
		if (empty($s)) return false;
		self::$regpattern=$s;
		return true;
	}	
	
	public static final function Getregpattern(){
		return self::$regpattern;
	}
}
 
$a=new weatherHack();
$a->_Display();
?>

Edit: Може да се изпълни и локално /преработваме го да записва в bla.txt/:
@echo off
php -f weather.php
if %errorlevel%==0 start notepad bla.txt

редактиран от anonymous на 06.02.09 23:46
phrozencrew
Пет, 06.02.09, 23:48
Ей това е показно за Обектно-Ориентирано Програмиране! И аз ще се науча... много ми харесва тоя код!
Аз го цъкнах така:
php get_wether.php > wreme.txt
редактиран от phrozencrew на 06.02.09 23:49

<1 2 >

Коментар

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