Котировки акций Jsoup соскребают с Yahoo Finance

Использование OracleSQL и Java

У меня есть «База данных TickerSymbol» и «База данных биржевых котировок».

Выбор символов тикера из «GOOG», «APPL», «FB» и «AMZN» из «TickerSymbolDatabase»
и распространение символов тикера в конце URL-адреса YahooFinance. http://finance.yahoo.com/q?s= (ТИКЕР)

Затем найти котировку акций и вставить данные котировки в «Базу данных котировок».

Я не совсем уверен, как использовать селектор Jsoup или как распространять символы тикера в конце URL-адреса YahooFinance.


person user3003451    schedule 18.11.2013    source источник


Ответы (2)


Вот простой пример. Пожалуйста, проверьте TOS, и вы можете предпочесть предложение Стэнли о выборке через CSV. Я хотел показать, как получить его в jsoup. Внедрить его в Oracle — это другой вопрос.

String[] codes = {"TSLA", "F", "TM"};
String baseUrl = "http://finance.yahoo.com/q?s=";
String ua = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.33 (KHTML, like Gecko) Chrome/27.0.1438.7 Safari/537.33";

for (String code : codes) {
    String url = baseUrl + code;
    Document doc  = Jsoup.connect(url).userAgent(ua).timeout(10*1000).get();
    String price = doc.select(".time_rtq_ticker").first().text();
    String name = doc.select(".title h2").first().text();

    System.out.println(String.format("%s [%s] is trading at %s", name, code, price));
}

Это выводит:

Tesla Motors, Inc. (TSLA) [TSLA] is trading at 135.45
Ford Motor Co. (F) [F] is trading at 17.07
Toyota Motor Corporation (TM) [TM] is trading at 127.98

Мне нравится использовать Try jsoup для тестирования и отладки ответов URL и запросов селекторов.

person Jonathan Hedley    schedule 18.11.2013
comment
Спасибо, очень помогло, буду дальше разбираться - person user3003451; 18.11.2013
comment
Здорово. Кстати, если это ответило на ваш первоначальный вопрос, не забудьте нажать «Принять»; это помогает другим узнать, что это сделано. - person Jonathan Hedley; 18.11.2013
comment
получить одно единственное значение обычно не так сложно. Но пробовали ли вы получить доступ к данным истории? - эти данные загружаются с помощью javascript, поэтому JSoup не может помочь. Существует также загрузка CSV, но тег a-href также создается из javascript, так что это тоже не поможет. URL-адрес, с которого извлекаются данные CSV, дает ответы 401-Unauthorized http. Итак, похоже, что данные истории недоступны. - person bvdb; 04.02.2018
comment
Похоже, мне нужно передать файл cookie согласия, потому что с приведенным выше кодом и печатью html я получаю такие вещи, как «метод формы = класс сообщения = действие формы согласия =/согласие›», а не запрошенная страница... - person Baked Inhalf; 20.12.2018

Выходной файл, таких как Apple, Inc Stock данных в http://finance.yahoo.com/q;_ylt=Ag5D9mq4OAYIeUaL64JN7QYDyr0F;_ylc=X1MDMjE0MjQ3ODk0OARfcgMyBGZyA3VoM19maW5hbmNlX3dlYl9ncwRmcjIDc2EtZ3AEZ3ByaWQDBG5fZ3BzAzEwBG9yaWdpbgNmaW5hbmNlLnlhaG9vLmNvbQRwb3MDMQRwcXN0cgMEcXVlcnkDQUFQTCwEc2FjAzEEc2FvAzE-?p=http%3A%2F%2Ffinance.yahoo.com%2Fq%3FS%3DAAPL%26ql%3D0&тип=2button&FR=uh3_finance_web_gs&UHB=uhb2&s=AAPL»отн= – это файл CSV. Вы можете просто прочитать содержимое и проанализировать его по разделителю-запятой.

person Stanley Stein    schedule 18.11.2013