Ruby on rails Nokugiri网络刮擦问题

Ruby on rails Nokugiri网络刮擦问题,ruby-on-rails,ruby-on-rails-4,web-scraping,Ruby On Rails,Ruby On Rails 4,Web Scraping,看起来我第一次问得不太好。再来一次 我在这里尝试遵循本教程: 我目前还试图从以下网站链接中获取价格: 我想要实现的是拥有所有这三种门票(名称和价格,希望尽可能多地了解门票/价格),并在我的web应用程序中使用它们 我不能给你看结果,它的尺寸太大了,但是我可以告诉你,我没有击中第二个byebug,这是我的代码 url = "http://www.ticketmaster.co.uk/derren-brown-miracle-glasgow-04-07-2016/event/3700507891

看起来我第一次问得不太好。再来一次

我在这里尝试遵循本教程:

我目前还试图从以下网站链接中获取价格:

我想要实现的是拥有所有这三种门票(名称和价格,希望尽可能多地了解门票/价格),并在我的web应用程序中使用它们

我不能给你看结果,它的尺寸太大了,但是我可以告诉你,我没有击中第二个byebug,这是我的代码

  url = "http://www.ticketmaster.co.uk/derren-brown-miracle-glasgow-04-07-2016/event/370050789149169E?artistid=1408737&majorcatid=10002&minorcatid=53&tpab=-1"
    doc = Nokogiri::HTML(open(url))
    byebug
    doc.css(".item").each do |item|
      title = item.at_css(".fru").text
      byebug
    end
不幸的是,为了帮助您,您最好自己尝试一下,以查看可怕的页面大小!哈哈

编辑,好吧。我的屏幕是27英寸,文字填满了屏幕

这是我从第一张图片中得到的图片

除此之外,我相信这张照片就是我所需要的?只是把它弄出来

谢谢
Sam

这里的主要问题是价格是用javascript编写的,而不是用html-itslef编写的。Nokogiri只解析XML和HTML,因此您需要awesome REGEX的帮助。在您阅读完整的代码之前,这里有一些技巧可以帮助您理解它

首先,我使用以下代码搜索名为
的所有标记:

doc.xpath(//script[@type='text/javascript']/text()”)。每个

它返回100多个对象,所以我需要找到其中哪一个可以找到名称和价格。因此,我发现我需要阅读的特定javascript中有一些独特的文本,所以我遍历了所有>100个对象,并测试它是否包含那个独特的字符串。以下是供您理解的图像:

当我找到这些和平,我只是用正则表达式提取价格和名称。这是工作代码。只需复制粘贴并运行它

require 'rubygems'
require 'nokogiri'
require 'open-uri'

def get_name_and_price
  ticketmaster_url = "http://www.ticketmaster.co.uk/derren-brown-miracle-glasgow-04-07-2016/event/370050789149169E?artistid=1408737&majorcatid=10002&minorcatid=53&tpab=-1"
  doc = Nokogiri::HTML(open( ticketmaster_url ))
  event_name = nil
  ticket_price = nil
  doc.xpath("//script[@type='text/javascript']/text()").each do |text|
    if text.content =~ /TM\.Tracking\.satellite/
      event_name = text.content[/"eventName":".*?"/].gsub!('"eventName":', '').gsub!('"', '')
    elsif text.content =~ /more_options_on_polling/
      ticket_price = text.content[/"total_price":"\d+\.\d+"/].gsub!('"total_price":', '').gsub!('"', '').to_f
    end
  end

  puts "Event name: " + event_name
  puts "Ticket price: " + ticket_price.to_s
end

get_name_and_price

图像也可能是一个很好的来源。哈没有想到图像!一秒钟嘿,我给你的问题添加了答案。这足够让你开始了。如果有帮助,请告诉我。快乐编码!谢谢,这会有很大的帮助,但是它只退还门票,这是最高限额,本次活动有3张门票可用。理想情况下,我可以使用车票名称/类型和价格来显示基本价格和费用。这就是编码之美我给了你起跑点。您可以使用regex自己搜索所有这些价格。在浏览器中,打开包含价格的页面,单击鼠标右键并选择“查看页面源”,然后搜索(CTRL+F)门票价格。试着理解其他程序员是如何将其编码到html页面的。知识需要时间。Happy codding.view page source,这是我无法解决的问题>。在处理这个问题时,是否需要处理它有点慢,有什么方法可以加快它吗?好的,我一直在处理它,我已经设法缩小了它的范围,但我还是以