Ruby 스크립트를 사용하여이 페이지를 대여 용 listings으로 긁어 내려합니다. 내가 실패한 메소드 중 일부는 Nokogiri와 Mechanize를 사용하지만 나머지 브라우저는 14 개의 목록을로드합니다. 나머지는 자바 스크립트가 포함 된 것으로 추정됩니다. 나는 간단히 rkelly을 보았습니다. 수업을 읽기에 운이 없었습니다.Ruby를 사용하여 자바 스크립트로로드 된 데이터의 긁힌 자국
##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 파일과의 기호도 너무 메신저 자바 스크립트 모달이된다 : 여기
는 내가 지금까지 무엇을 가지고 정말로 여기에 달라 붙는 지점에 도달했습니다. 이 문제에 접근하는 가장 좋은 방법은 무엇입니까?
지금 해당 페이지를보고 있으며 응답 페이지 2 목록의 데이터를 볼 수 있습니다. – pguardiario
반환 목록을 다시 확인하면 curl 요청을 사용하여 부분 응답 만받습니다. 페이지 당 1/3의 목록이 Javascript를 사용하여 렌더링됩니다. Watir을 사용하여 나머지 목록을 가져 오는 브라우저를 열 수있었습니다. –