【发布时间】:2020-05-14 21:29:25
【问题描述】:
我有一个个人 C# 项目,用于跟踪活动期间的实时体育数据。它通过在这项运动的网站上抓取一个 JSON 文件来做到这一点。 JSON 文件在体育赛事期间不断更新。
但是,页面不会自行刷新。现有文件被简单地覆盖。为了根据需要实时监控数据,我必须连续发送请求 2-4 个小时——从事件开始到结束。
我的代码被配置为无限循环,直到我按下 Esc 键:
string url = "https://www.example.com/live/feeds/stats.json";
while (!(Console.KeyAvailable && Console.ReadKey(true).Key == ConsoleKey.Escape))
{
try
{
string json = (new WebClient()).DownloadString(url);
// parse JSON
...
}
catch (...)
{
...
}
}
我的问题是:
- 如果我确实一次发送如此大量的请求数小时,我是否有可能将我的 IP 地址列入黑名单并拒绝访问?
- 是否可以在不发送一百万个请求的情况下连续监控此 JSON 文件?
- 这可以使用其他语言/框架来完成吗?它不需要在 C# 中。
【问题讨论】:
-
我建议不要使用 WebClient,而是使用 HttpClient。但是对于这个问题,它应该仍然有效。 “如果我一次发送如此大量的请求数小时,我是否有可能将我的 IP 地址列入黑名单并拒绝访问?” - 也许,是的。您可能希望将请求限制为少于每分钟,如果不是每分钟 1 次的话。 “是否可以在不发送一百万个请求的情况下连续监视此 JSON 文件?”您可以限制请求数,但我怀疑您是否可以将其推送给您。
-
“这可以使用其他语言/框架来完成吗?” 当然可以,但对请求频率有同样的限制。
-
1) 是的。取决于站点策略 2)如果 json 作为页面上的某个 js 对象存在,您可以尝试使用
Selenium -
您到底想对数据做什么?另外,您知道它的更新频率或一般更新时间吗?
标签: c# json web-scraping monitoring webclient