<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Последние сообщения темы "Парсинг gismeteo.ru"]]></title>
		<link>http://www.lua.ru/forum/posts/list/1.page</link>
		<description><![CDATA[Последние сообщения, отправленные в тему "Парсинг gismeteo.ru"]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>Парсинг gismeteo.ru</title>
				<description><![CDATA[ переписываю парсер погоды с бота.... беру страницы типо http://informer.gismeteo.ru/rss/27715.xml<br /> <br /> 	<br /> [code]local s = BotApi.HTTPGet("http://informer.gismeteo.ru/rss/"..cityn..".xml", "informer.gismeteo.ru")<br /> 	if not s then<br /> 		return "Нет связи с GisMeteo!"<br /> 	end<br /> 	s = BotApi.FromUTF8(s)<br /> 	if string.find(s, "404 Not Found") then<br /> 		return "Город не найден!"<br /> 	end<br /> <br /> -- а вот тут затык... нужно получить что между <br /> ---&lt;item&gt;<br /> -- ....<br /> -- &lt;title&gt;???&lt;/title&gt;<br /> -- ....<br /> -- &lt;description&gt;???&lt;/description&gt;<br /> -- ....<br /> --&lt;/item&gt;<br /> <br />  for w in string.gmatch(s, "/r/n&lt;item&gt;(.*?)&lt;/item&gt;/r/n") do<br />       -- ну это так для отладки... BotApi.SendPM(nick, w[1])<br />      end[/code]<br /> <br /> толкового мана по регулярным нету :(<br /> пробывал ".-&lt;item&gt;.-&lt;title&gt;(.-)&lt;/title&gt;.-&lt;description&gt;.-&lt;/description&gt;.-&lt;/item&gt;.-"<br /> ]]></description>
				<guid isPermaLink="true">http://www.lua.ru/forum/posts/preList/54/344.page</guid>
				<link>http://www.lua.ru/forum/posts/preList/54/344.page</link>
				<pubDate><![CDATA[Wed, 19 Mar 2008 13:28:41]]> GMT</pubDate>
				<author><![CDATA[ theelephant]]></author>
			</item>
			<item>
				<title>Re:Парсинг gismeteo.ru</title>
				<description><![CDATA[ [code]  for w in string.gmatch(s, "/r/n&lt;item&gt;(.*?)&lt;/item&gt;/r/n") do  <br />        -- ну это так для отладки... BotApi.SendPM(nick, w[1])  <br />    end  [/code]Здесь из паттерна нужно убрать обе пары /r/n, тогда должно получиться.<br /> А какой смысл в w[1] для стринга? Имелось в виду w:sub(1,1) ?]]></description>
				<guid isPermaLink="true">http://www.lua.ru/forum/posts/preList/54/345.page</guid>
				<link>http://www.lua.ru/forum/posts/preList/54/345.page</link>
				<pubDate><![CDATA[Wed, 19 Mar 2008 14:06:36]]> GMT</pubDate>
				<author><![CDATA[ smz]]></author>
			</item>
			<item>
				<title>Парсинг gismeteo.ru</title>
				<description><![CDATA[ я думал он массив возвращает...<br /> <br /> пары убрал получилось<br /> <br /> [code]    for w in string.gmatch(s, "&lt;item&gt;(.*?)&lt;/item&gt;") do<br />        BotApi.SendPM(nick, "Раз раз раз! проверка! раз! "..w)<br />      end[/code]<br /> <br /> но цикл НИ разу не идет  :twisted: ]]></description>
				<guid isPermaLink="true">http://www.lua.ru/forum/posts/preList/54/346.page</guid>
				<link>http://www.lua.ru/forum/posts/preList/54/346.page</link>
				<pubDate><![CDATA[Wed, 19 Mar 2008 14:12:14]]> GMT</pubDate>
				<author><![CDATA[ theelephant]]></author>
			</item>
			<item>
				<title>Re:Парсинг gismeteo.ru</title>
				<description><![CDATA[ Если цикл ни разу не идёт, то что же у тебя "получилось"?]]></description>
				<guid isPermaLink="true">http://www.lua.ru/forum/posts/preList/54/348.page</guid>
				<link>http://www.lua.ru/forum/posts/preList/54/348.page</link>
				<pubDate><![CDATA[Wed, 19 Mar 2008 14:22:03]]> GMT</pubDate>
				<author><![CDATA[ smz]]></author>
			</item>
			<item>
				<title>Re:Парсинг gismeteo.ru</title>
				<description><![CDATA[ фиг его знает...<br /> s заполнена данными с страницы]]></description>
				<guid isPermaLink="true">http://www.lua.ru/forum/posts/preList/54/349.page</guid>
				<link>http://www.lua.ru/forum/posts/preList/54/349.page</link>
				<pubDate><![CDATA[Wed, 19 Mar 2008 14:24:30]]> GMT</pubDate>
				<author><![CDATA[ theelephant]]></author>
			</item>
			<item>
				<title>Парсинг gismeteo.ru</title>
				<description><![CDATA[ А, ещё одна ошибка.<br /> Вместо (.*?) нужно (.-)]]></description>
				<guid isPermaLink="true">http://www.lua.ru/forum/posts/preList/54/351.page</guid>
				<link>http://www.lua.ru/forum/posts/preList/54/351.page</link>
				<pubDate><![CDATA[Wed, 19 Mar 2008 14:29:03]]> GMT</pubDate>
				<author><![CDATA[ smz]]></author>
			</item>
			<item>
				<title>Re:Парсинг gismeteo.ru</title>
				<description><![CDATA[ Вышло смотрим...<br /> <br /> [code]     for w in string.gmatch(s, "&lt;item&gt;.-&lt;title&gt;(.-)&lt;/title&gt;.-&lt;description&gt;(.-)&lt;/description&gt;.-&lt;/item&gt;") do<br />        BotApi.SendPM(nick, "Раз раз раз! проверка! раз! "..w)<br />      end<br /> [/code]<br /> выдает две строчки<br /> [quote]Раз раз раз! проверка! раз! Тула: День 19 мар, Ср<br /> Раз раз раз! проверка! раз! Тула: Вечер 19 мар, Ср[/quote]<br /> <br /> вопросы... где ещё 2 строчки (ночь/утро)? :)<br /> и где поле description ....]]></description>
				<guid isPermaLink="true">http://www.lua.ru/forum/posts/preList/54/352.page</guid>
				<link>http://www.lua.ru/forum/posts/preList/54/352.page</link>
				<pubDate><![CDATA[Wed, 19 Mar 2008 14:47:17]]> GMT</pubDate>
				<author><![CDATA[ theelephant]]></author>
			</item>
			<item>
				<title>Re:Парсинг gismeteo.ru</title>
				<description><![CDATA[ [code]for w1,w2 in string.gmatch(s, "&lt;item&gt;.-&lt;title&gt;(.-)&lt;/title&gt;.-&lt;description&gt;(.-)&lt;/description&gt;.-&lt;/item&gt;") do<br />   BotApi.SendPM(nick, "Раз раз раз! проверка! раз! "..w1.."\n"..w2)<br /> end[/code]]]></description>
				<guid isPermaLink="true">http://www.lua.ru/forum/posts/preList/54/354.page</guid>
				<link>http://www.lua.ru/forum/posts/preList/54/354.page</link>
				<pubDate><![CDATA[Wed, 19 Mar 2008 14:58:03]]> GMT</pubDate>
				<author><![CDATA[ smz]]></author>
			</item>
			<item>
				<title>Re:Парсинг gismeteo.ru</title>
				<description><![CDATA[ Ы ступил только ещё 2 мессаги (ночь/утро) он не показывает <img src="http://www.lua.ru/forum//images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" />]]></description>
				<guid isPermaLink="true">http://www.lua.ru/forum/posts/preList/54/359.page</guid>
				<link>http://www.lua.ru/forum/posts/preList/54/359.page</link>
				<pubDate><![CDATA[Wed, 19 Mar 2008 15:13:42]]> GMT</pubDate>
				<author><![CDATA[ theelephant]]></author>
			</item>
			<item>
				<title>Re:Парсинг gismeteo.ru</title>
				<description><![CDATA[ [quote=theelephant]Ы ступил только ещё 2 мессаги (ночь/утро) он не показывает :)[/quote]<br /> <br /> Посмотри в сторону LuaExpat [url]http://www.keplerproject.org/luaexpat/lom.html[/url]<br /> <br /> Lua Object Model (LOM) is a representation of XML elements through Lua data types. Currently it is not supposed to be 100% complete, but simple.<br /> <br /> [code]require"lxp"<br /> require"lxp.lom"<br /> <br /> tab = lxp.lom.parse([[<br /> &lt;rss xmlns:gismeteo="http://www.gismeteo.ru" version="2.0"&gt;<br />  &lt;channel&gt;<br />    &lt;title&gt;GISMETEO.RU: English&lt;/title&gt;<br />   &lt;link&gt;http://www.gismeteo.ru&lt;/link&gt;<br />   &lt;description&gt;Test Descr&lt;/description&gt;<br />   &lt;ttl&gt;60&lt;/ttl&gt;<br />  &lt;/channel&gt;<br /> &lt;/rss&gt;<br /> ]])<br /> <br /> <br /> <br /> <br /> for k,v in pairs(tab) do<br />     --print(k,v)<br />     if type(v)=='table' then<br />         for k1,v1 in pairs(v) do<br />             print(v1)<br />                 if type(v1)=='table' then<br />                     for k2,v2 in pairs(v1) do<br />                         print(v2)<br />                     end<br />                 end<br />         end<br />     end<br /> end    [/code]<br /> <br /> Но у него пока маленький глюк, - он вылетает когда находит не latin1 символ,<br /> багрепорт авторам направлен.]]></description>
				<guid isPermaLink="true">http://www.lua.ru/forum/posts/preList/54/376.page</guid>
				<link>http://www.lua.ru/forum/posts/preList/54/376.page</link>
				<pubDate><![CDATA[Wed, 19 Mar 2008 17:59:59]]> GMT</pubDate>
				<author><![CDATA[ al]]></author>
			</item>
			<item>
				<title>Re:Парсинг gismeteo.ru</title>
				<description><![CDATA[ [b]Непонял сути вопроса, если надо вытащить текст погоды из xml то вот пример :mrgreen:[/b]<br /> [code]<br /> local sPattern = '&lt;item&gt;%s*&lt;title&gt;(.-):(.-)&lt;/title&gt;.-&lt;description&gt;(.-)&lt;/description&gt;.-&lt;/item&gt;'<br /> local curCity, sSep = '', '«»'<br /> sWeather = '\r\n\r\n'..sSep:rep(48)..'\r\n\r\n'<br /> for sCity,sTitle,sDesc in sBuffer:gmatch(sPattern) do<br />     local sUp = sDesc:match('^(%S)') curCity = sCity<br />     sWeather = sWeather..'\t\t\t\t\t'..sTitle..'.\r\n\r\n\t'..toUpper(sUp)..sDesc:sub(2, -1)..'.\r\n\r\n'..sSep:rep(48)..'\r\n\r\n'<br /> end<br /> sWeather = '*** '..curCity..':'..sWeather<br /> <br /> toUpper = function(sMsg)   -- Приводим текстовую строку в верхний регистр<br />     local sUp = sMsg:gsub('(%S)', function(w)<br />         local i = w:byte()<br />         return string.char((i &gt;= 97 and i &lt;= 122 or i &gt;= 224 and i &lt;= 255) and i - 32 or i == 184 and 168 or i)<br />     end)<br />     return sUp<br /> end<br /> [/code]]]></description>
				<guid isPermaLink="true">http://www.lua.ru/forum/posts/preList/54/377.page</guid>
				<link>http://www.lua.ru/forum/posts/preList/54/377.page</link>
				<pubDate><![CDATA[Wed, 19 Mar 2008 18:21:35]]> GMT</pubDate>
				<author><![CDATA[ Scriptologist]]></author>
			</item>
			<item>
				<title>Re:Парсинг gismeteo.ru</title>
				<description><![CDATA[ [quote=Scriptologist][b]Непонял сути вопроса, если надо вытащить текст погоды из xml то вот пример <img src="http://www.lua.ru/forum//images/smilies/ed515dbff23a0ee3241dcc0a601c9ed6.gif" />[/b]<br /> [/quote]<br /> <br /> Так надеюсь понятнее:<br /> [quote]<br /> require"lxp"<br /> require"lxp.lom"<br /> <br /> tab = lxp.lom.parse([[  <br />  &lt;rss xmlns:gismeteo="http://www.gismeteo.ru" version="2.0"&gt;  <br />  &lt;channel&gt;  <br />     &lt;title&gt;GISMETEO.RU: English&lt;/title&gt;  <br />    &lt;link&gt;http://www.gismeteo.ru&lt;/link&gt;  <br />    &lt;description&gt;Test Descr&lt;/description&gt;  <br />    &lt;ttl&gt;60&lt;/ttl&gt;  <br />  &lt;/channel&gt;  <br />  &lt;/rss&gt;  <br />  ]])<br /> <br /> <br />  --1. rss<br />  -- 1. attr rss (xmlns:gismeteo="http://www.gismeteo.ru" version="2.0")<br />  -- 2. channel<br />  --  1. attr tag chanel (пусто)<br />  --  2. tag title<br />  --  3. attr tag title (пусто)<br />  --  4. tag link<br />  --  4. tag description<br />  --  5. tag ttl<br />  <br /> rss = 1<br />     rss_attr = 1<br /> channel = 2<br />     channel_attr = 1<br />     title =2<br />     title_attr=3<br />     link=4<br />     link_attr=5<br />     description =6<br />     description_attr =7<br />     ttl=8<br />     ttl_attr=9<br /> <br /> value = 1 -- значение тега<br /> <br /> <br /> print(tab[channel][title][value])<br /> print(tab[channel][link][value])<br /> print(tab[channel][ttl][value])<br /> [/quote]]]></description>
				<guid isPermaLink="true">http://www.lua.ru/forum/posts/preList/54/378.page</guid>
				<link>http://www.lua.ru/forum/posts/preList/54/378.page</link>
				<pubDate><![CDATA[Wed, 19 Mar 2008 19:47:25]]> GMT</pubDate>
				<author><![CDATA[ al]]></author>
			</item>
			<item>
				<title>Re:Парсинг gismeteo.ru</title>
				<description><![CDATA[ [quote] --1. rss<br /> -- 1. attr rss (xmlns:gismeteo="http://www.gismeteo.ru" version="2.0")<br /> -- 2. channel<br /> -- 1. attr tag chanel (пусто)<br /> -- 2. tag title<br /> -- 3. attr tag title (пусто)<br /> -- 4. tag link<br /> -- 4. tag description<br /> -- 5. tag ttl<br /> <br /> rss = 1<br /> rss_attr = 1<br /> channel = 2<br /> channel_attr = 1<br /> title =2<br /> title_attr=3<br /> link=4<br /> link_attr=5<br /> description =6<br /> description_attr =7<br /> ttl=8<br /> ttl_attr=9<br /> <br /> value = 1 -- значение тега [/quote]<br /> <br /> а нафига определять такую кучу переменных... я не врубился <img src="http://www.lua.ru/forum//images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" />]]></description>
				<guid isPermaLink="true">http://www.lua.ru/forum/posts/preList/54/405.page</guid>
				<link>http://www.lua.ru/forum/posts/preList/54/405.page</link>
				<pubDate><![CDATA[Thu, 20 Mar 2008 17:38:01]]> GMT</pubDate>
				<author><![CDATA[ theelephant]]></author>
			</item>
			<item>
				<title>Re:Парсинг gismeteo.ru</title>
				<description><![CDATA[ [quote=theelephant][quote] --1. rss<br /> -- 1. attr rss (xmlns:gismeteo="http://www.gismeteo.ru" version="2.0")<br /> -- 2. channel<br /> -- 1. attr tag chanel (пусто)<br /> -- 2. tag title<br /> -- 3. attr tag title (пусто)<br /> -- 4. tag link<br /> -- 4. tag description<br /> -- 5. tag ttl<br /> <br /> rss = 1<br /> rss_attr = 1<br /> channel = 2<br /> channel_attr = 1<br /> title =2<br /> title_attr=3<br /> link=4<br /> link_attr=5<br /> description =6<br /> description_attr =7<br /> ttl=8<br /> ttl_attr=9<br /> <br /> value = 1 -- значение тега [/quote]<br /> <br /> а нафига определять такую кучу переменных... я не врубился :)[/quote]<br /> <br /> Я тебе наглядно показываю откуда появляются значения, конечно же можно сделать так:<br /> <br /> [code] print(tab[2][2][1]) [/code]<br /> <br /> и нечего не объявлять]]></description>
				<guid isPermaLink="true">http://www.lua.ru/forum/posts/preList/54/406.page</guid>
				<link>http://www.lua.ru/forum/posts/preList/54/406.page</link>
				<pubDate><![CDATA[Thu, 20 Mar 2008 17:55:12]]> GMT</pubDate>
				<author><![CDATA[ al]]></author>
			</item>
			<item>
				<title>Re:Парсинг gismeteo.ru</title>
				<description><![CDATA[ я тупка  <img src="http://www.lua.ru/forum//images/smilies/ed515dbff23a0ee3241dcc0a601c9ed6.gif" /> ]]></description>
				<guid isPermaLink="true">http://www.lua.ru/forum/posts/preList/54/407.page</guid>
				<link>http://www.lua.ru/forum/posts/preList/54/407.page</link>
				<pubDate><![CDATA[Thu, 20 Mar 2008 17:56:37]]> GMT</pubDate>
				<author><![CDATA[ theelephant]]></author>
			</item>
			<item>
				<title>Парсинг gismeteo.ru</title>
				<description><![CDATA[ [quote=theelephant]переписываю парсер погоды с бота.... беру страницы типо http://informer.gismeteo.ru/rss/27715.xml<br /> [code]...хрум...[/code]<br /> толкового мана по регулярным нету :(<br /> пробывал ".-&lt;item&gt;.-&lt;title&gt;(.-)&lt;/title&gt;.-&lt;description&gt;.-&lt;/description&gt;.-&lt;/item&gt;.-"<br /> [/quote]<br /> <br /> Надеюсь нижеприведенный код покажет красоту Lua:<br /> [code]<br /> local http = require("socket.http")<br /> local XML = require( 'XML' )<br /> local aContent = http.request([[http://informer.gismeteo.ru/rss/27715.xml]])<br /> <br /> <br /> local anXML = XML( aContent )<br /> <br /> for i=1,4 do<br /> 	print(anXML['rss']['channel']['item'][i]['title']['$'],':',anXML['rss']['channel']['item'][i]['description']['$'])<br /> end<br /> [/code]<br /> <br /> <br /> XML.lua ([url]http://dev.alt.textdrive.com/browser/HTTP/XML.lua[/url]) <br /> <br /> индекс ['$'] - данные внутри тега, остальное должно быть понятно из кода]]></description>
				<guid isPermaLink="true">http://www.lua.ru/forum/posts/preList/54/411.page</guid>
				<link>http://www.lua.ru/forum/posts/preList/54/411.page</link>
				<pubDate><![CDATA[Fri, 21 Mar 2008 19:12:58]]> GMT</pubDate>
				<author><![CDATA[ al]]></author>
			</item>
			<item>
				<title>Парсинг gismeteo.ru</title>
				<description><![CDATA[ Надеюсь нижеприведенный код покажет красоту Lua:<br /> [code]<br /> local http = require("socket.http")<br /> local XML = require( 'XML' )<br /> local aContent = http.request([[http://informer.gismeteo.ru/rss/27715.xml]])<br /> <br /> <br /> local anXML = XML( aContent )<br /> <br /> for i=1,4 do<br /> 	print(anXML['rss']['channel']['item'][i]['title']['$'],':',anXML['rss']['channel']['item'][i]['description']['$'])<br /> end<br /> [/code]<br /> <br /> А возможно ли тоже самое для HTML страницы? Просто я пробовал, не получилось :( <br /> <br /> Если есть чем поделиться, то парсить можно, скажем, эту страницу:<br /> http://www.lua.ru/page/list.html<br /> <br /> Хотелось бы, чтобы можно было так же обращаться:<br /> print(anHTML['html']['head']['title'])]]></description>
				<guid isPermaLink="true">http://www.lua.ru/forum/posts/preList/54/490.page</guid>
				<link>http://www.lua.ru/forum/posts/preList/54/490.page</link>
				<pubDate><![CDATA[Fri, 11 Apr 2008 16:56:52]]> GMT</pubDate>
				<author><![CDATA[ torantbor]]></author>
			</item>
			<item>
				<title>Парсинг gismeteo.ru</title>
				<description><![CDATA[ [quote=torantbor]Хрум<br /> <br /> <br /> А возможно ли тоже самое для HTML страницы? Просто я пробовал, не получилось :( <br /> <br /> Если есть чем поделиться, то парсить можно, скажем, эту страницу:<br /> http://www.lua.ru/page/list.html<br /> <br /> Хотелось бы, чтобы можно было так же обращаться:<br /> print(anHTML['html']['head']['title'])[/quote]<br /> <br /> Конечно!<br /> Так в чем проблема!<br /> [code]<br /> local http = require("socket.http")<br /> local XML = require( 'XML' )<br /> local aContent = http.request([[http://www.lua.ru/page/list.html]])<br /> <br /> local anHTML = XML( aContent )<br /> <br /> print(anHTML['html']['head']['title']['$'])<br /> [/code]<br /> <br /> Правда есть два условия:<br /> <br /> 1. Документ должен быть строго XHTML<br /> 2. Все скрипты должны подключаться внешними<br /> 2а. Если в встроенном в код странице скрипте найдеться &lt; или &gt; то парсер остановиться....]]></description>
				<guid isPermaLink="true">http://www.lua.ru/forum/posts/preList/54/491.page</guid>
				<link>http://www.lua.ru/forum/posts/preList/54/491.page</link>
				<pubDate><![CDATA[Fri, 11 Apr 2008 17:48:16]]> GMT</pubDate>
				<author><![CDATA[ al]]></author>
			</item>
			<item>
				<title>Re:Парсинг gismeteo.ru</title>
				<description><![CDATA[ Понятно, спасибо.]]></description>
				<guid isPermaLink="true">http://www.lua.ru/forum/posts/preList/54/493.page</guid>
				<link>http://www.lua.ru/forum/posts/preList/54/493.page</link>
				<pubDate><![CDATA[Fri, 11 Apr 2008 17:56:21]]> GMT</pubDate>
				<author><![CDATA[ torantbor]]></author>
			</item>
	</channel>
</rss>