ruby-on-rails-3 - 抓取表格分页数据

标签 ruby-on-rails-3 web-scraping mechanize

包含我需要的数据的页面已将其结构更改为新的分页格式。我正在更新我的页面抓取工具。

我无法理解如何从所有不同的页面收集数据。

需要抓取的页面是: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

最佳答案

当您单击页面上的一个页面链接时,页面上的 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 发出发布请求 - 然后依次解析每个页面并聚合结果。

关于ruby-on-rails-3 - 抓取表格分页数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28112430/

相关文章:

python - 使用 python 和 BeautifulSoup 抓取不完整的标签

python mechanize find_link 找到最终匹配的链接

ruby-on-rails - 我应该在新项目中使用哪个版本的 Rails

ruby-on-rails-3 - 用样本(假)数据填充数据库

python - 执行错误 : The variable display is not defined. (-2753)

python - 有没有办法找到一个字符串中某个标签的所有索引,相对于删除标签的同一个字符串?

webkit - 自动浏览复杂网页

ruby-on-rails - ruby on rails 中的自动测试错误

ruby-on-rails - 目标方法的名称是否在 before_filter 中可用

python - 网页抓取 : Downloading a pdf from a javascript link