Помогите Сделать Парсинг |
Здравствуйте, гость ( Вход | Регистрация )
Помогите Сделать Парсинг |
13.4.2009, 7:11
Сообщение
#1
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
Помогите сделать парсинг страницы с погодой со страницы провайдера
Код MakeNeedData = function(sData) -- парсинг (обработка) данных local _,_, sArchiveData = sData:find("<td>(.-)</td>") -- ищем архивные данные sArchiveData = sArchiveData:g(" <a.*</a>", ""):g(" ", " ") -- убираем ссылку и двойной пробел local _,_, sMainTitle = sData:find("<b>(.-)</b>") -- ищем заголовок страницы local _,_, sWeatherData = sData:find("<table>(.-)</table>") -- ищем табличку с данными о погоде local tRowWeatherData, tRowData2, tRowsInfo, tMadeData, tMadeData2 = {}, {}, {}, {}, {} -- объявляем локальные таблицы for sRow in sWeatherData:gmatch("\t<tr.->(.-)</tr>") do -- заносим данные из каждого ряда таблицы полученных данных в таблицу tRowWeatherData table.insert(tRowWeatherData, sRow) end for i, sMadeRowData in pairs(tRowWeatherData) do -- проходим по таблице с рядами tRowData2[i], tRowsInfo[i] = {}, {} -- заносим индекс в таблицу for sTd, sRow2 in sMadeRowData:gmatch("(<td.->)(.-)</td.->") do -- обрабатывам каждую колонку в каждом ряду по мере прохождения по ним local _,_, iColSpan = sTd:find("colspan=(%d)") -- совмещены ли колонки?! if not iColSpan then -- если нет table.insert(tRowsInfo[i], 1) -- то заносим в таблицу с инфой о колонках 1 else -- если да table.insert(tRowsInfo[i], tonumber(iColSpan)) -- то заносим в таблицу с инфой о колонках кол-во совмещенных колонок end table.insert(tRowData2[i], sRow2) -- заносим необработанную инфу в таблицу end end Код ReMakeData = function(tData) -- обработка сырой таблицы данных local tData = DeleteNotNeedInfo(tData) -- удаляем не нужные нам строки -- дальше ёпнешься объяснять, в каждой строке - своя система подачи данных при помощи тегом html, в них ищется нужная инфа и уже потом заносится в таблицу готовой информации for i, sData in pairs(tData[1]) do tData[1][i] = sData:g("<br>", ", "):g("<span.->", ""):g("</span>", "") end for i, sData in pairs(tData[3]) do tData[3][i] = sData:g("<img.*title=\"", ""):g("\">", "") end table.remove(tData[4], 1) for i, sData in pairs(tData[4]) do tData[4][i] = sData:g("<img.*title=\"", ""):g("\">", "") end for i, sData in pairs(tData[8]) do local _,_, sTitle = sData:find("title=\"(.+)\"") if sTitle then tData[8][i] = sTitle end end tData[10][1] = tData[10][1]:g("<.*>", "") for i, sData in pairs(tData[10]) do if sData == " " then tData[10][i] = "" end end for i, sData in pairs(tData[11]) do if sData == " " then tData[11][i] = "" else local _,_, sTitle = sData:find("title='(.+)'") if sTitle then tData[11][i] = sTitle end end end for i, sData in pairs(tData[12]) do if sData == " " then tData[12][i] = "" else tData[12][i] = sData:g("<img.*title = \"", ""):g("\">", "") end end return tData end Структура страницы: Код <div align="center">
<p>Погода на ближайшие дни</p> <table><tr><td colspan=2><b>13 апр, Пн (Утро)</b></td></tr> <tr><td>-1...-3 °C<br>742..744 мм<br>Северный, 3 м/с</td><td><img src="/images/weather/tucha.png" border="0" width="40" height="40" alt="" onload="fixPNG(this)"></td></tr><tr><td colspan=2> </td></tr> <tr><td colspan=2><b>13 апр, Пн (День)</b></td></tr> <tr><td>-1...+1 °C<br>742..744 мм<br>Северный, 4 м/с</td><td><img src="/images/weather/tucha.png" border="0" width="40" height="40" alt="" onload="fixPNG(this)"></td></tr><tr><td colspan=2> </td></tr> <tr><td colspan=2><b>13 апр, Пн (Вечер)</b></td></tr> <tr><td>+1...+3 °C<br>742..744 мм<br>Северный, 3 м/с</td><td><img src="/images/weather/tucha.png" border="0" width="40" height="40" alt="" onload="fixPNG(this)"></td></tr><tr><td colspan=2> </td></tr> <tr><td colspan=2><b>14 апр, Вт (Ночь)</b></td></tr> <tr><td>-1...-3 °C<br>742..744 мм<br>Северный, 2 м/с</td><td><img src="/images/weather/tucha.png" border="0" width="40" height="40" alt="" onload="fixPNG(this)"></td></tr><tr><td colspan=2> </td></tr> <tr><td colspan=2><b>14 апр, Вт (Утро)</b></td></tr> <tr><td>-1...-3 °C<br>741..743 мм<br>Северо-Западный, 2 м/с</td><td><img src="/images/weather/tucha.png" border="0" width="40" height="40" alt="" onload="fixPNG(this)"></td></tr><tr><td colspan=2> </td></tr> <tr><td colspan=2><b>14 апр, Вт (День)</b></td></tr> <tr><td>-1...+1 °C<br>741..743 мм<br>Северный, 2 м/с</td><td><img src="/images/weather/snow.png" border="0" width="40" height="40" alt="" onload="fixPNG(this)"></td></tr><tr><td colspan=2> </td></tr> <tr><td colspan=2><b>14 апр, Вт (Вечер)</b></td></tr> <tr><td>+1...+3 °C<br>740..742 мм<br>Северный, 1 м/с</td><td><img src="/images/weather/tucha.png" border="0" width="40" height="40" alt="" onload="fixPNG(this)"></td></tr><tr><td colspan=2> </td></tr> <tr><td colspan=2><b>15 апр, Ср (Ночь)</b></td></tr> <tr><td>-1...-3 °C<br>741..743 мм<br>Южный, 1 м/с</td><td><img src="/images/weather/obl_sun.png" border="0" width="40" height="40" alt="" onload="fixPNG(this)"></td></tr><tr><td colspan=2> </td></tr> <tr><td colspan=2><b>15 апр, Ср (Утро)</b></td></tr> <tr><td>-1...-3 °C<br>740..742 мм<br>Юго-Западный, 1 м/с</td><td><img src="/images/weather/obl_sun.png" border="0" width="40" height="40" alt="" onload="fixPNG(this)"></td></tr><tr><td colspan=2> </td></tr> </table> </div>
Прикрепленные файлы
|
|
|
13.4.2009, 20:07
Сообщение
#2
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
Тему удалить можно...
|
|
|
Похожие темы
|
Сейчас: 23.12.2024, 17:04 |