2015-01-23 4 views
0

Страница с данными, которые мне нужны, изменила ее структуру на новый разбитый на страницы формат. Я работаю над обновлением моего скребка для страницы.Скремблирование табличных данных с разбивкой по страницам

Я не могу понять, как собирать данные со всех разных страниц.

страница быть зачищена: http://eserver.goutsi.com:8080/DPW230.cgi

Я знаю, как собрать данные в таблицах, но я не могу понять, как справиться с разбиением на страницы.

Это мой оригинальный сценарий:

scrape_actor = Mechanize.new 
page = scrape_actor.get("http://loads.goutsi.com:8080/wntv5/BKLoad") 
rows = page.body.to_s.split("</tr>") 
rows.each do |row| 
    if row.include? "bgcolor='#f5f5f5'" 
    columns = row.split("</td>") 
    i = 0 
    while i < columns.count 
     columns[i] = columns[i].gsub(%r{</?[^>]+?>},'').gsub(/[\n\t\r ]+/,'').gsub("&nbsp;",'') 
     i+=1 
    end 
    username = "UTSI" 
    origin = columns[0].gsub("&nbsp;","") 
    pickup = Chronic.parse(columns[1]+"/"+Time.now.strftime("%Y")) 
    dest = columns[3] 
    comments = "miles: #{columns[4]}, phone: #{columns[9]}, other: #{columns[11]}" 
    equipment = columns[6] 
    ltl = false 
    ltl = true if columns[7] == "LTL" 
    Scrape.post_load(username,origin,dest,pickup,'',ltl,equipment,comments,'','','') 
    end 
end 

ответ

0

При нажатии одной из ссылок на страницы Javascript на странице инициирует запрос на запись к тому же пути с новым номером.

Это можно найти в их файле JS на http://eserver.goutsi.com:8080/js/LoadBoard.js

function gotoPage(pageNumber) 
{ 
    document.getElementById("PageNbr").value= pageNumber;  // Set new page number 
    document.getElementById("PageDir").value="R";    // Refresh 
    document.getElementById("theForm").submit(); 
} 

Этот код представляет эту форму:

<form action="/DPW230.cgi" method="post" id="theForm">... 

который имеет поле:

<input type="hidden" id="PageDir" name="PageDir" value=" "><input type="hidden" id="PageNbr" name="PageNbr" value="1"> 

Это value, для которого обновляется в том же javascript.

Это означает, что вам необходимо отправлять почтовые запросы по этому URL-адресу, причем последовательные номера страниц являются параметрами - затем анализируйте каждую страницу, в свою очередь, агрегируя результаты.

Смежные вопросы