gpt4 book ai didi

javascript - 在 JavaScript 更改值之前和之后使用 Nokogiri 和 Ruby 进行抓取

转载 作者:数据小太阳 更新时间:2023-10-29 05:41:24 24 4
gpt4 key购买 nike

我有一个程序可以从 https://web.apps.markit.com/WMXAXLP?YYY2220_zJkhPN/sWPxwhzYw8K4DcqW07HfIQykbYMaXf8fTzWT6WKnuivTcM0W584u1QRwj 中抓取值

我当前的代码是:

doc = Nokogiri::HTML(open(source_url))

puts doc.css('span.indexDate').text
date = doc.css('span.indexDate').text
date = Date.parse(date)
puts date
values = doc.css('table#CdsIndexTable td.col2 span')
puts values

这会正确地从“CDS 索引”表中抓取第二列的日期和值,这很好。现在,我想从我遇到问题的“债券指数”表中抓取相似的值。

我可以看到一个 JavaScript 函数在不加载页面且不更改页面 URL 的情况下更改它。这两个表之间的区别在于它们的 ID 不同,这正是应该的。但是,不幸的是,当我尝试使用时:

values = doc.css('table#BondIndexTable')
puts values

我从债券指数表中一无所获。但是如果我使用:

values = doc.css('table#CdsIndexTable')
puts values

如何从两个表中获取值?

最佳答案

您可以将 Capybara 与 Poltergeist 驱动程序一起使用来执行 Javascript 并格式化页面。 Poltergeist 是 PhantomJS headless 浏览器的包装器。以下是如何执行此操作的示例:

require 'rubygems'
require 'capybara'
require 'capybara/dsl'
require 'capybara/poltergeist'

Capybara.default_driver = :poltergeist
Capybara.run_server = false

module GetPrice
class WebScraper
include Capybara::DSL

def get_page_data(url)
visit(url)
doc = Nokogiri::HTML(page.html)
doc.css('td.col2 span')
end
end
end

scraper = GetPrice::WebScraper.new
puts scraper.get_page_data('https://web.apps.markit.com/WMXAXLP?YYY2220_zJkhPN/sWPxwhzYw8K4DcqW07HfIQykbYMaXf8fTzWT6WKnuivTcM0W584u1QRwj').map(&:text).inspect

访问此处获取使用 Amazon.com 的完整示例: https://github.com/wakproductions/amazon_get_price/blob/master/getprice.rb

关于javascript - 在 JavaScript 更改值之前和之后使用 Nokogiri 和 Ruby 进行抓取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13364309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com