myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 
 
Ответить в данную темуНачать новую тему

> Помогите Сделать Парсинг

Теги
Нет тегов для показа
Accelerator
сообщение 13.4.2009, 7:11
Сообщение #1


Developer
******

Группа: Модераторы
Сообщений: 541
Регистрация: 11.11.2008
Пользователь №: 1 075
Спасибо сказали: 244 раза




Помогите сделать парсинг страницы с погодой со страницы провайдера http://internet.factorial.ru/channel/?section=main. Мои наброски, но думаю неправильно beat_brick.gif

Код
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 == "&nbsp;" then
            tData[10][i] = ""
        end
    end
    for i, sData in pairs(tData[11]) do
        if sData == "&nbsp;" 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 == "&nbsp;" 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 апр, Пн&nbsp;(Утро)</b></td></tr>
<tr><td>-1...-3&nbsp;&deg;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>&nbsp;</td></tr>
<tr><td colspan=2><b>13 апр, Пн&nbsp;(День)</b></td></tr>
<tr><td>-1...+1&nbsp;&deg;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>&nbsp;</td></tr>

<tr><td colspan=2><b>13 апр, Пн&nbsp;(Вечер)</b></td></tr>
<tr><td>+1...+3&nbsp;&deg;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>&nbsp;</td></tr>
<tr><td colspan=2><b>14 апр, Вт&nbsp;(Ночь)</b></td></tr>
<tr><td>-1...-3&nbsp;&deg;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>&nbsp;</td></tr>
<tr><td colspan=2><b>14 апр, Вт&nbsp;(Утро)</b></td></tr>

<tr><td>-1...-3&nbsp;&deg;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>&nbsp;</td></tr>
<tr><td colspan=2><b>14 апр, Вт&nbsp;(День)</b></td></tr>
<tr><td>-1...+1&nbsp;&deg;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>&nbsp;</td></tr>
<tr><td colspan=2><b>14 апр, Вт&nbsp;(Вечер)</b></td></tr>
<tr><td>+1...+3&nbsp;&deg;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>&nbsp;</td></tr>

<tr><td colspan=2><b>15 апр, Ср&nbsp;(Ночь)</b></td></tr>
<tr><td>-1...-3&nbsp;&deg;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>&nbsp;</td></tr>
<tr><td colspan=2><b>15 апр, Ср&nbsp;(Утро)</b></td></tr>
<tr><td>-1...-3&nbsp;&deg;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>&nbsp;</td></tr>
</table>      </div>

Прикрепленные файлы
Прикрепленный файл  Weather.rar ( 5.66 килобайт ) Кол-во скачиваний: 2
 
Go to the top of the page
+Quote Post
Accelerator
сообщение 13.4.2009, 20:07
Сообщение #2


Developer
******

Группа: Модераторы
Сообщений: 541
Регистрация: 11.11.2008
Пользователь №: 1 075
Спасибо сказали: 244 раза




Тему удалить можно...
Go to the top of the page
+Quote Post

Ответить в данную темуНачать новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts как сделать вот этот скрипт
12 мамин_парень 12 526 13.9.2017, 10:51 Посл. сообщение: dimetro
No New Posts Помогите собрать пакет хаб софта для прошивки роутера OpenWRT (РЕШЕНО)
ptokax и opendchub
2 мамин_парень 6 300 5.5.2017, 5:21 Посл. сообщение: мамин_парень
No new ПОМОГИТЕ
Как дать определенному нику права администратора в любом скрипте ?
25 probest 24 995 18.1.2015, 1:17 Посл. сообщение: probest
No New Posts От: ПОМОГИТЕ
От темы с ID: 5730
0 dimetro 4 203 17.1.2015, 23:57 Посл. сообщение: dimetro
No New Posts Topic has attachmentsНужно сделать изменение в скрипте Антипорно
Переделать переменную в функцию
5 thehawk 9 703 21.10.2014, 21:23 Посл. сообщение: thehawk
No New Posts Topic has attachmentsПомогите !
3 Dani_Filth 7 206 4.10.2014, 14:52 Посл. сообщение: Артём
No New Posts Topic has attachmentsПомогите Новичку разобрать со скрипами.
НЕ могу понять,после того как загрузил скрипт,его ещё надо настраивать
2 Prizrak333 6 551 27.4.2014, 10:53 Посл. сообщение: Prizrak333
No New Posts Как сделать, чтобы пароли кодировал?
7 RAZORkhv 11 171 9.10.2013, 15:42 Посл. сообщение: Alexey
No New Posts помогите мне пожалуйста настроить dc++
1 sdncn 6 304 29.9.2013, 9:37 Посл. сообщение: Delia
No new Помогите с Хабом!
26 cpr 32 406 7.2.2013, 17:20 Посл. сообщение: DEN 007
No New Posts Помогите разобрать ситуацию с хабом, создал хаб на птокеX 0.5.0.0
Помогите разобрать ситуацию с хабом
12 mambob 14 722 30.1.2013, 0:03 Посл. сообщение: Yamakasi
No New Posts Помогите наполнить Юзерами свежий хаб Help
Help me please
1 mambob 4 956 20.1.2013, 3:42 Посл. сообщение: Артём
No New Posts помогите с ip_zone4_min
2 ruslanlee 7 455 9.1.2013, 20:43 Посл. сообщение: ruslanlee
No New Posts Помогите со скриптом! Плачу!
help
2 jekasumy 6 152 19.10.2012, 23:10 Посл. сообщение: jekasumy
No New Posts От: помогите переделать скрипт для Ptokax
От темы с ID: 5237
0 Infern0_05 5 408 14.9.2012, 15:46 Посл. сообщение: Infern0_05

 



RSS Сейчас: 23.11.2024, 12:16