gpt4 book ai didi

c# - 下载当前 WSJ.com 最优惠利率

转载 作者:太空宇宙 更新时间:2023-11-03 19:34:30 26 4
gpt4 key购买 nike

我需要自动下载当前的《华尔街日报》最优惠利率并将数据加载到我的数据库中。自动下载此数据的最佳方法是什么?

为此,我提出了三种可能的解决方案:

  1. 从 WSJ 抓取一个 HTML 网页。
  2. 解析来自 WSJ 的 RSS 新闻提要。
  3. 使用一些我没有从 WSJ 找到的 API。

关于方案一,虽然我不喜欢方案一,因为它很容易坏掉,但它是我从头到尾解决的唯一方案。看来我可以抓取 this page使用 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 阅读器解决方案,但我看不到一种方法可以可靠地预测最优惠利率变化的措辞。因此,我不认为这是一种与解决方案 1 一样安全或可靠的获取数据的方法。

关于解决方案 3,我还没有找到任何已发布的 API 来检查最优惠利率等货币利率。如果有人知道用于检查汇率的 Web 服务或其他 API,请告诉我。

最佳答案

我实现了以下代码来抓取 HTML 并处理结果:

SSIS 包 C# 脚本任务

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

丑陋的代码,但它达到了目的。还有一些验证规则运行以验证数据是否正确,但这是我用来抓取值的核心。

关于c# - 下载当前 WSJ.com 最优惠利率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2679590/

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