为了练习,我正在尝试为此页面上每个旅舍卡的价格构建一个简单的刮板:
[当我检查页面时,HTML清楚地显示每个价格都在“ price”('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,但是无法访问它,这似乎违反直觉。预先谢谢!
如今,许多网站都通过AJAX(XHR)请求加载数据。此数据将无法用于机械化。
您可以通过在浏览器中禁用JavaScript的情况下加载页面来轻松地进行检查。如果未显示价格,则表示价格已被JavaScript延迟加载。
在这种情况下,您需要一个可以执行JavaScript的工具,例如Selenium。