【问题标题】:nokogiri screen scrape css selector issuenokogiri 屏幕抓取 css 选择器问题
【发布时间】:2016-05-28 18:58:36
【问题描述】:

我正在尝试让 css 处理这个 rake 任务。

namespace :task do
  task test: :environment do
    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))
    #psec-p label

    doc.css("#psec-p").each do |price|
      puts price.at_css("#psec-p")
      byebug
    end
  end
end

但是我要返回这个:

#<Nokogiri::XML::Element:0x3fd226469e60 name="fieldset" attributes=[#<Nokogiri::XML::Attr:0x3fd2281c953c name="class" value="group-price widget-group">, #<Nokogiri::XML::Attr:0x3fd2281c9528 name="id" value="psec-p">] children=[#<Nokogiri::XML::Text:0x3fd2281c8d44 "\n            ">, #<Nokogiri::XML::Element:0x3fd2281c8c7c name="legend" attributes=[#<Nokogiri::XML::Attr:0x3fd2281c8c18 name="id" value="psec-p-legend">] children=[#<Nokogiri::XML::Text:0x3fd2281c8614 "Price:">]>, #<Nokogiri::XML::Text:0x3fd2281c8448 "\n          ">]>

我猜我选择了错误的元素,因为我选择了psec-p

谁能告诉我哪里出错了?

我一直在关注 railscast 190

【问题讨论】:

    标签: html css ruby-on-rails web-scraping nokogiri


    【解决方案1】:

    http://www.ticketmaster.co.uk 上的价格通过 Javascript 动态应用于 HTML。这样做的部分原因是为了阻碍抓取工作。您真的不能使用 Nokogiri 从该域中抓取此类内容,因为 Nokogiri 处理原始 HTML/XML,并且在此过程中不执行 Javascript。有其他工具可以做到这一点,但这些工具需要完全不同的方法。

    出于学习目的,您应该选择动态较少的网站。例如,http://www.wallacesuk.com 有一个不错的、可解析的站点。您可以通过一个在页面内显示信息的网站轻松学习基本的网络抓取技术,例如这个。

    http://ticketmaster.co.uk 抓取需要先进的抓取技术,远远超出 Railscast 190 所展示的内容。

    【讨论】:

    • 除了我想要一个挑战,我一直在使用ticketmaster作为我所有学习的基础:)我也设法做到了;)
    【解决方案2】:

    这个:

    doc.css("#psec-p").each do |price|
      puts price.at_css("#psec-p")
      byebug
    end
    

    可以更好地使用:

    puts doc.at('#psec-p')
    

    #psec-p 是一个 ID,它在一个页面中只能出现一次,所以 atat_css 会找到出现一次。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-25
      • 1970-01-01
      • 1970-01-01
      • 2018-01-04
      • 2015-06-26
      • 1970-01-01
      • 1970-01-01
      • 2010-12-27
      相关资源
      最近更新 更多