class ScraperController < ApplicationController
def show
mechanize = Mechanize.new
website = mechanize.get('https://website.com/')
$max = 2
$counter = 0
$link_to_click = 2
@names = []
while $counter <= $max do
@names.push(website.css('.memName').text.strip)
website.link_with(:text => '2').text.strip.click
$link_to_click += 1
$counter += 1
end
end
end
我试图从每个页面中删除20个项目,然后单击底部的链接(1,2,3,4,5等)。但是,我收到标题中显示的错误,告诉我我无法单击该字符串。因此它识别按钮'2'存在,但会告诉我是否无法点击它。理想情况下,一旦这个被整理出来,我想使用$ link_to_click变量作为替换'2'的方法,以便它每次都会递增,但它总是以nil的形式返回。我也将它改为.to_s,结果相同。
如果我同时删除所有点击,它将刮取同一页面3次,而不是移动到下一页。我还在.click之前删除了text.strip部分,它会做同样的事情。我尝试了很多变化,但没有运气。
我非常感谢您提供的任何建议。
答案 0 :(得分:1)
我最后审查了我引用的文章以解决这个问题并得出了这个结论。
我将website_link更改为website = website.link_with(:text => $link_to_click.to_s).click
(因为它只作为字符串工作)并打印出第一页,第二页以及之后的每一页。
这些是我参考的文章,了解如何执行此操作。
http://docs.seattlerb.org/mechanize/GUIDE_rdoc.html
和
https://readysteadycode.com/howto-scrape-websites-with-ruby-and-mechanize