f# - 类型提供者'ProviderImplementation.HtmlProvider'报错:cookie的'Value'='XXXX'部分无效
问题描述
我正在使用 HtmlProvider 来抓取股票公司新闻,例如https://www.nasdaq.com/symbol/{STOCK_SYMBOL_HERE}/news-headlines
,但我在这行代码中遇到错误
let [<Literal>] stockNewsUrl = "https://www.nasdaq.com/symbol/AAPL/news-headlines"
let news = new HtmlProvider<stockNewsUrl>()
第二行有波浪线,错误是Error FS3033 The type provider 'ProviderImplementation.HtmlProvider' reported an error: Cannot read sample HTML from 'https://www.nasdaq.com/symbol/AAPL/news-headlines': The 'Value'='AAPL,technology' part of the cookie is invalid.
解决方案
看起来这失败了,因为 F# Data 以 Nasdaq 服务不喜欢的格式发送 cookie。一个简单的解决方法是下载页面一次以在编译时提供示例,然后在运行时使用其他方式下载页面。
type Nasdaq = HtmlProvider<"c:/temp/nasdaq.html">
let wc = new WebClient()
let downloaded = wc.DownloadString("https://www.nasdaq.com/symbol/AAPL/news-headlines")
let ns = Nasdaq.Load(downloaded)
这可行,但有两个问题:
- 该页面不包含任何表格/列表,因此该
ns
值不会让您很好地静态访问任何有用的东西 - 当我尝试使用下载数据时出现超时异常
WebClient
,所以也许这也不起作用(但可能只是我在代理或其他东西后面..)
推荐阅读
- blockchain - 在 remix.ethereum.org,blockhash 函数总是将所有变量归零
- php - 将字符串与 PHP 中的字符串列表连接起来
- reactjs - 在 React 中使用 axios 从前端启用 CORS?
- android - SoundPool 不播放声音(而 MediaPlayer 播放)
- python - python中从文件中读取特殊字符的问题
- c - 如何获取在 C (LINUX) 中打开文件的模式
- android - Firestore 如何在回收站视图中从 Firestore 中检索数据
- ruby-on-rails - 在轨道上的选择输入红宝石上循环
- javascript - 在验证检查后执行验证中间件
- python - 第 8 行的块标记无效:“crsf_token”,预期为“endblock”。您是否忘记注册或加载此标签?