Скачать текущий рейтинг WSJ.com - PullRequest
1 голос
/ 21 апреля 2010

Мне нужно автоматически загрузить текущую цену Prime Wall Journal и загрузить данные в мою базу данных. Каков наилучший способ автоматической загрузки этих данных?

Я предложил три возможных решения для этого:

  1. Очистите веб-страницу HTML от WSJ.
  2. Разбор RSS-ленты новостей от WSJ.
  3. Используйте какой-то API, который я не нашел в WSJ.

Что касается решения 1, хотя мне не нравится решение 1, поскольку оно может легко сломаться, оно единственное, которое я разработал от начала до конца. Похоже, я могу очистить эту страницу с помощью WebRequest / WebResponse и прочитать текст в этом коде:

<tr>
<td style="text-align:left" class="colhead">&nbsp;</td>
<td class="colhead">Latest</td>
<td class="colhead">Wk ago</td>
<td class="colhead">High</td>
<td class="colhead">Low</td>
</tr>
<tr>
<td class="text">U.S.</td>
<td style="font-weight:bold;" class="num">3.25</td>
<td class="num">3.25</td>
<td class="num">3.25</td>
<td class="num" style="border-right:0px">3.25</td>
</tr>

Что касается решения 2, хотя я могу реализовать решение для чтения RSS, я не вижу способа надежно предвидеть словесные изменения в Prime Rate. Поэтому я не думаю, что это такой же безопасный или надежный способ получения данных, как решение 1.

Что касается решения 3, я не нашел ни одного опубликованного API для проверки денежных ставок, таких как Prime Rate. Если кто-нибудь знает о веб-сервисе или другом API для проверки ставок, пожалуйста, дайте мне знать.

Ответы [ 3 ]

2 голосов
/ 03 июля 2010

Для этого есть веб-сервис, но он может не стоить затрат, если все, что вам нужно, это простой тариф:

http://www.armindexes.com/

2 голосов
/ 29 сентября 2015

Я опаздываю примерно на 5 лет, но подумал, что поднять это. Quandl имеет хороший API для получения этой информации.

2 голосов
/ 22 апреля 2010

Я реализовал следующий код для очистки HTML и обработки результатов:

Задача сценария пакета C # для служб SSIS

public void Main()
    {
        // Post the web page.
        try
        {
            // Set variables.
            bool fireAgain = true;
            Uri WebPageURI = new Uri("http://online.wsj.com/mdc/public/page/2_3020-moneyrate.html");

            // Post the web page.
            WebRequest request = WebRequest.Create(WebPageURI);
            request.Timeout = (1000 * 60 * 60);
            request.Method = "POST";
            WebResponse response = request.GetResponse();
            StreamReader reader = new StreamReader(response.GetResponseStream());
            string Output = reader.ReadToEnd();

            Dts.Variables["wall_street_journal_str"].Value = Output;
            Dts.Events.FireInformation(0, "WebRequest:", WebPageURI.ToString(), "", 0, ref fireAgain);
            Dts.Events.FireInformation(0, "WebResponse:", Output, "", 0, ref fireAgain);
        }
        catch (WebException ex)
        {
            Dts.Events.FireError(0, "Error:", ex.Message, "", 0);
        }


        // Return success.
        Dts.TaskResult = (int)ScriptResults.Success;
    }

Хранимая процедура, вызываемая задачей «Выполнение SQL»

SET @WALL_STREET_JOURNAL_HTML = SUBSTRING(@WALL_STREET_JOURNAL_HTML, CHARINDEX('Prime rates', @WALL_STREET_JOURNAL_HTML, 1), CHARINDEX('Canada', @WALL_STREET_JOURNAL_HTML, CHARINDEX('Prime rates', @WALL_STREET_JOURNAL_HTML, 1)) - CHARINDEX('Prime rates', @WALL_STREET_JOURNAL_HTML, 1))
    SELECT @RATE_CHANGE_DATE = CONVERT(DATE, RTRIM(LTRIM(SUBSTRING(@WALL_STREET_JOURNAL_HTML, CHARINDEX('[', @WALL_STREET_JOURNAL_HTML, 1) + 23, CHARINDEX(']', @WALL_STREET_JOURNAL_HTML, 1) - CHARINDEX('[', @WALL_STREET_JOURNAL_HTML, 1) - 23))))
        , @RATE = CONVERT(NUMERIC(8, 2), SUBSTRING(@WALL_STREET_JOURNAL_HTML, CHARINDEX('class="num">', @WALL_STREET_JOURNAL_HTML, CHARINDEX('U.S.</td>', @WALL_STREET_JOURNAL_HTML, 1)) + 12, CHARINDEX('<', @WALL_STREET_JOURNAL_HTML, CHARINDEX('class="num">', @WALL_STREET_JOURNAL_HTML, CHARINDEX('U.S.</td>', @WALL_STREET_JOURNAL_HTML, 1))) - CHARINDEX('class="num">', @WALL_STREET_JOURNAL_HTML, CHARINDEX('U.S.</td>', @WALL_STREET_JOURNAL_HTML, 1)) -12))

Гадкий код, но он служит цели. Есть также несколько правил проверки, которые выполняются для проверки правильности данных, но это является основой того, что я использовал для очистки значения.

...