Ruby Mechanize在数组中链接后面的HTML

时间:2015-01-20 09:48:57

标签: html ruby mechanize-ruby

我正在使用Mechanize来抓取链接后面的一堆页面。在第A页,有一些公司有一个名为“[完整个人资料]”的链接,其后面是我想要抓取的完整HTML。第A页上有10个。我似乎无法遍历链接并将它们保存到数组中,然后再使用它们。所以,我不妨遍历每个链接,同时抓取网址和公司HTML。我打算存储它们并使用它们,但它们不是完整链接,我不知道它是如何完成的。

无论如何,这就是我现在所拥有的:

companyobjects = agent.page.links_with(:text => '[complete profile]')
companylinks = []

 companyobjects.each do |i|
   companylinks.push(i)
   # -> Shove each company's html into the db
   page = agent.i.href.click
   puts
   puts page
 end

page = agent.i.href.click是出错的地方。 '我'应该是一个单独的公司,所以要求它的内部链接并点击它应该得到页面,但由于某种原因它没有超过“方法”我。

有人知道如何抓住找到的链接并抓住它们后面的html吗?我迷路了。任何输入赞赏。

干杯

1 个答案:

答案 0 :(得分:0)

如果您想迭代每个链接并访问它链接到的页面,这应该有效:

agent.page.links_with(text: '[complete profile]').each do |link|
  link.click
  puts agent.page.body # prints HTML that corresponds to link

  # OR

  page = link.click
  html = page.body
  # do something with html
end

如果您想收集每个链接的完整网址,这应该有效:

links = []
agent.page.links_with(text: '[complete profile]').each do |link|
  links << URI.join(agent.page.uri, link.href).to_s
end