ruby - 使用 Ruby 抓取使用 Javascript 加载的数据的 URL

标签 ruby web-scraping nokogiri mechanize scrape

我正在尝试抓取此页面以供出租 listings使用 Ruby 脚本。我尝试过的一些不成功的方法是使用 Nokogiri 和 Mechanize,但是浏览器只加载了 14 个列表,其余的都是通过我认为是嵌入式 javascript 加载的。我简要地看了rkelly没有运气阅读可用的类(class)。

这是我到目前为止所拥有的:

##First Solution only returned 14 Results
require 'mechanize'
require 'nokogiri'
require 'open-uri'

url = "http://streeteasy.com/for-rent/soho/"

listings = Nokogiri::HTML(open(url))

# agent = Mechanize.new
# agent.get(url)
# pp signin_page = agent.page.link_with(:text => 'Sign In').click
# # pp signin_page.forms

listing_sorted = listings.css('.item_inner')

object = listing_sorted.map do |listing|
    object = {}
        object[:address] = listing.css("div.details_title a").first.inner_html
        object[:price] = listing.css("span.price").inner_html.gsub(/[^0-9.]/, '')
    object
end

sorted_object = object.sort! { |a,b| a[:price].to_i <=> b[:price].to_i }.last 20


puts @json_object = sorted_object.to_json
puts "There are #{sorted_object.length} listings"

还有一个 xls 文件,您可以将列表导出到其中,但是您需要登录并且登录是一个 javascript 模式,所以我真的在这里遇到了一个症结。解决这个问题的最佳方法是什么。

最佳答案

我设法做的是使用 Watir,Selenium 的 Ruby Wrapper 在浏览器中打开页面,然后将加载的 html 传递到 Nokogiri 进行解析。

关于ruby - 使用 Ruby 抓取使用 Javascript 加载的数据的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26745627/

相关文章:

ruby-on-rails - Ruby/Rails 时间辅助方法

ruby-on-rails - 为什么在编写 Rails 测试时是 'assert_not' 而不是 '!'?

ruby-on-rails - 如何将GarageBand(.band)文件上传到我的Rails应用程序?

python - 如何测试 Django 网站中的外部 URL 或链接?

python - 如何从网页中嵌入的 Tableau 图表中抓取工具提示值

ruby-on-rails - Rails 如何解析文本/事件流?

python - 抓取 Google 新闻搜索

ruby - 如何使用 Nokogiri 获取 <p> 标签父类名称?

ruby - 如何使用 Nokogiri 添加没有值的属性

ruby - Nokogiri 未定义方法 'attribute' nilClass