我正在使用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吗?我迷路了。任何输入赞赏。
干杯
答案 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