在实践中,我正在尝试为这个页面上的每个宿舍卡的价格建立一个简单的刮刀:
当我检查页面时,HTML语言清楚地显示每个价格都在“价格”('span.price')类的范围内。因此,我使用Mechanize获得页面主体,然后尝试使用Nokogiri解析主体。
使用这个简单的例子,我似乎无法访问卡片中的任何信息。代码如下:
def scraper
agent = Mechanize.new
madrid_url = "https://www.hostelworld.com/search?
search_keywords=Madrid,%20Spain&country=Spain&city=Madrid&date_from=2019-11-
29&date_to=2019-11-30&number_of_guests=1"
###
page = agent.get(madrid_url)
page_body = agent.page.body
parsed_body = Nokogiri::HTML(page_body)
###
test = parsed_body.css('span.price').text
test_price = test.to_i
byebug
end如有任何建议,我们将不胜感激!我可以看到HTML/CSS,但无法访问它,这似乎有悖于直觉。提前谢谢你!
发布于 2019-10-28 19:23:23
如今,许多网站通过AJAX (XHR)请求加载数据。这些数据将无法机械化。
您可以通过在浏览器中禁用JavaScript加载页面来轻松检查这一点。如果没有显示价格,这意味着它们被JavaScript延迟加载了。
在这种情况下,您需要一个可以执行JavaScript的工具,例如Selenium。
https://stackoverflow.com/questions/58589899
复制相似问题