机械化访问 link 并获取页面标题
Mechanize visit a link and get page title
我正在使用 mechanize 来抓取一些数据。不幸的是,我似乎无法让它访问 link 并获取所访问页面的页面标题。
这是我的任务:
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
点击 link 后,您不需要该块,您已经在一个块中,迭代您在 "main" URL 中找到的每个锚点。
如果您单击任何 link,它将 returns 您指向它指向的页面(锚点的 href)。之后你可以看到这个检查你的 mechanize 变量上的内容:
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
给你。 Mechanize 现在为您处理属于当前页面的数据。所以现在您可以通过机械化,使用其 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 rules/selectors 以使元素易于识别。
我正在使用 mechanize 来抓取一些数据。不幸的是,我似乎无法让它访问 link 并获取所访问页面的页面标题。
这是我的任务:
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
点击 link 后,您不需要该块,您已经在一个块中,迭代您在 "main" URL 中找到的每个锚点。
如果您单击任何 link,它将 returns 您指向它指向的页面(锚点的 href)。之后你可以看到这个检查你的 mechanize 变量上的内容:
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
给你。 Mechanize 现在为您处理属于当前页面的数据。所以现在您可以通过机械化,使用其 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 rules/selectors 以使元素易于识别。