Pregunta

Es necesario descargar automáticamente la corriente de Wall Street Journal tasa de interés preferencial y cargar los datos en mi base de datos. ¿Cuál es el mejor método de descarga de estos datos de forma automática?

Me han llegado con tres soluciones posibles para hacer esto:

  1. Raspe una página Web HTML a partir de WSJ.
  2. analizar un canal RSS de noticias del Wall Street Journal.
  3. Use un poco de API que no he encontrado de WSJ.

En cuanto a la solución 1, aunque no me gusta la solución 1, ya que fácilmente podría romper, es el único que he trabajado a cabo de principio a fin. Parece que puede raspar esta página con un WebRequest / WebResponse y leer el texto de este código:

<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>

En cuanto a la solución 2, aunque puedo implementar una solución de lector de RSS, no veo una manera de anticipar fiable verborrea de los cambios en la tasa de interés preferencial. Por lo tanto, no creo que esto es como una forma segura y fiable para obtener los datos como una solución 1.

En cuanto a la solución 3, no he encontrado ninguna API publicadas para el control de las tasas de dinero, como la tasa de interés preferencial. Si alguien sabe de un servicio web o de otro API para el control de las tasas de dinero, a continuación, por favor hágamelo saber.

¿Fue útil?

Solución

Me implementado el código siguiente para raspar el código HTML y procesar los resultados:

paquete de SSIS C # tarea Script

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;
    }

procedimiento almacenado llamado por una tarea Ejecutar 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))

código feo, pero sirve el propósito. También hay varias reglas de validación que se ejecutan para verificar los datos son correctos, pero este es el núcleo de lo que he usado para raspar el valor.

Otros consejos

Hay un servicio web para esto, pero puede que no sea la pena el costo, si lo que quieres es la tasa preferencial:

http://www.armindexes.com/

Estoy a 5 años de retraso, pero pensé en tocar el tema. Quandl tiene una API agradable para obtener esta información.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top