机械化访问链接并获取页面标题

问题描述 投票:1回答:1

我正在使用mechanize来抓取一些数据。不幸的是,我似乎无法访问该链接并获取所访问页面的页面标题。

这是我的任务:

task :estimateone => :environment do
  require 'mechanize'

  mechanize = Mechanize.new
  page = mechanize.get('https://www.city.com/city/list/50-city-cafes-you-should-have-eaten-breakfast-at')
  page.css('ol li a').each do |link|
   mechanize.click(link).each do |property|
        puts property.title
      end
    end
end
ruby-on-rails ruby mechanize
1个回答
1
投票

单击链接后,您不需要该块,您已经在一个块中,迭代您在“主”URL中找到的每个锚点。

如果单击任何链接,它将返回它指向的页面(锚点的href)。你可以看到这之后检查你的机械化变量上的内容:

page.css(<selector>).each do |link|
  mechanize.click(link)
  mechanize

=> #<Mechanize
 ...
 #<Mechanize::Page
  {url #<URI::HTTPS https://www.theurbanlist.com/brisbane/directory/scout-cafe>}
  {meta_refresh}
  {title "Scout Cafe, Petrie Terrace | Brisbane | The Urban List"}
  {iframes

你在这。现在,机械化处理属于当前页面的数据。所以现在你可以通过机械化,使用它的page方法,访问它的标题和所有其他:

page.css('div[itemprop="articleBody"] ol li a').each do |link|
  mechanize.click(link)
  puts "Title: #{mechanize.page.title}"
end

Title: Scout Cafe, Petrie Terrace | Brisbane | The Urban List
Title: Southside Tea Room | Brisbane | The Urban List
Title: Spring Hill Deli Cafe, Spring Hill | Brisbane | The Urban List

请注意,实际上并不需要使用itemprop属性,但我建议您添加更具体的CSS规则/选择器以使元素易于识别。

© www.soinside.com 2019 - 2024. All rights reserved.