【发布时间】:2021-07-28 13:23:51
【问题描述】:
我想从 yahoo 中抓取数据作为练习,然后从中制作图表。我遇到了一个问题,当我抓取日期时,它们的格式很奇怪:
?10? ?Aug?, ?2020
字符串中的问号并不是真正的问号,它们是一些我不知道的字符,所以我无法使用 Replace() 删除它们。
然后,当我尝试使用 CDate() 将其转换为日期格式时,代码因“类型不匹配”错误而崩溃。
我需要找到一种方法来找出这些字符是什么以便使用 Replace() 删除它们,或者以某种方式将这种奇怪的格式转换为日期。 或者,以某种方式改进抓取过程 - 到目前为止,我一直在使用例如
ie.document.getElementsByClassName("Py(10px) Ta(start) Pend(10px)")(3).innerText
获取数据 - 也可以解决这个问题。
如果有人想尝试抓取它,也可以提供示例网址:
https://finance.yahoo.com/quote/LAC/history?period1=1469404800&period2=1627171200&interval=1d&filter=history&frequency=1d&includeAdjustedClose=true
我的代码示例如下:
DateString = doc.getElementsByClassName("Py(10px) Ta(start) Pend(10px)")(j).innerText
LeftDateString = Clean_NonPrintableCharacters(DateString)
Worksheets("Stock_data").Range("A2").Value = CDate(LeftDateString)
【问题讨论】:
-
你想要的格式只是
10 Aug, 2020吗?第一个表示为01是什么?只是想也许只是取第一次休息的中间两位数,等等...... -
你试过
=CODE("textValue")函数来获取数值吗?然后,您可以将其与 Replace 一起使用。 -
@BruceWayne 老实说,我想要的格式是适合 CDate() 的任何格式
-
在传递给任何日期函数之前从字符串中删除不可打印的字符 - 请参阅 stackoverflow.com/questions/41882525/… 上的出色示例函数
-
@dbmitch 这听起来是个好主意,但是,该函数实际上对我给它的字符串没有任何作用......不知道这意味着什么或这些字符是什么
标签: vba web-scraping