Ruby/Selenium 访问雅虎财经报价查找字段
Ruby/Selenium access Yahoo Finance Quote Lookup field
我正在尝试使用 Ruby 和 Selenium 从 Yahoo Finance 网站抓取信息。
我需要在页面上找到 Quote Lookup 输入字段并将它发送一些值,如 TWTR,例如 open/access 有关 Twitter 公司的信息。
这是我的,但我收到错误:
代码:
require 'selenium-webdriver'
require 'byebug'
target_asset = 'TWTR'
url = 'https://finance.yahoo.com/'
driver = Selenium::WebDriver.for :chrome
begin
driver.get url
sleep rand(2..4)
input_element = driver.find_element(class: 'D(ib) Pstart(10px) Bxz(bb) Bgc($lv3BgColor) W(100%) H(32px) Lh(32px) Bdrs(0) Bxsh(n) Fz(s) Bg(n) Bd O(n):f O(n):h Bdc($seperatorColor) Bdc($linkColor):f finsrch-inpt').send_keys target_asset, :return
ensure
driver.quit
end
但这是我得到的错误:
目标框架分离(Selenium::WebDriver::Error::WebDriverError)
(会话信息:chrome=100.0.4896.127)
你必须形成更好的定位器,它适用于以下定位器。试试看。您不需要任何睡眠语句,因为程序会自动等待页面加载。如果你还想使用等待,你可以等待隐式等待或显式等待。
编写如下代码,效果很好。
require 'selenium-webdriver'
target_asset = 'TWTR'
url = 'https://finance.yahoo.com/'
driver = Selenium::WebDriver.for :chrome
begin
driver.get url
driver.find_element(css: "input[placeholder='Quote Lookup']").send_keys target_asset, :return
wait = Selenium::WebDriver::Wait.new(timeout: 30) # seconds
wait.until { !driver.find_element(xpath: "//td[@data-test='MARKET_CAP-value']").text.empty? }
p driver.find_element(xpath: "//td[@data-test='MARKET_CAP-value']").text
ensure
driver.quit
end
我正在尝试使用 Ruby 和 Selenium 从 Yahoo Finance 网站抓取信息。
我需要在页面上找到 Quote Lookup 输入字段并将它发送一些值,如 TWTR,例如 open/access 有关 Twitter 公司的信息。
这是我的,但我收到错误:
代码:
require 'selenium-webdriver'
require 'byebug'
target_asset = 'TWTR'
url = 'https://finance.yahoo.com/'
driver = Selenium::WebDriver.for :chrome
begin
driver.get url
sleep rand(2..4)
input_element = driver.find_element(class: 'D(ib) Pstart(10px) Bxz(bb) Bgc($lv3BgColor) W(100%) H(32px) Lh(32px) Bdrs(0) Bxsh(n) Fz(s) Bg(n) Bd O(n):f O(n):h Bdc($seperatorColor) Bdc($linkColor):f finsrch-inpt').send_keys target_asset, :return
ensure
driver.quit
end
但这是我得到的错误:
目标框架分离(Selenium::WebDriver::Error::WebDriverError)
(会话信息:chrome=100.0.4896.127)
你必须形成更好的定位器,它适用于以下定位器。试试看。您不需要任何睡眠语句,因为程序会自动等待页面加载。如果你还想使用等待,你可以等待隐式等待或显式等待。
编写如下代码,效果很好。
require 'selenium-webdriver'
target_asset = 'TWTR'
url = 'https://finance.yahoo.com/'
driver = Selenium::WebDriver.for :chrome
begin
driver.get url
driver.find_element(css: "input[placeholder='Quote Lookup']").send_keys target_asset, :return
wait = Selenium::WebDriver::Wait.new(timeout: 30) # seconds
wait.until { !driver.find_element(xpath: "//td[@data-test='MARKET_CAP-value']").text.empty? }
p driver.find_element(xpath: "//td[@data-test='MARKET_CAP-value']").text
ensure
driver.quit
end