我正在尝试获取此网站上的列名的内部文本和href属性:
https://stockcharts.com/freecharts/sectorsummary.html?&G=SECTOR_DJUSNS&O=1
但是我得到了所有的超链接,除了表中的那些。
有没有人可以看看这段代码,让我知道哪里出了问题?
Sub Scraping_StockCharts()
Dim XMLPage As New MSXML2.XMLHTTP60
Dim HTMLDoc As New MSHTML.HTMLDocument
Dim HTMLIm As MSHTML.IHTMLElement
Dim HTMLIms As MSHTML.IHTMLElementCollection
Dim URL As String
URL = "https://stockcharts.com/freecharts/sectorsummary.html?&G=SECTOR_DJUSNS&O=1"
XMLPage.Open "Get", URL, False
XMLPage.setRequestHeader "Content-Type", "text/xml"
XMLPage.send
HTMLDoc.body.innerHTML = XMLPage.responseText
Row = 1
Set HTMLIms = HTMLDoc.getElementsByTagName("a")
For Each HTMLIm In HTMLIms
Sheets("Results").Cells(Row, 2).Value = HTMLIm.innerText
Sheets("Results").Cells(Row, 3).Value = HTMLIm.getAttribute("href")
Row = Row + 1
Next HTMLIm
End Sub发布于 2020-08-27 04:28:57
不允许通过xmlhttp进行抓取。不确定是否自动化浏览器。您需要仔细阅读服务条款。有了浏览器自动化,你可以只使用你有的url,我怀疑。
从智能的角度来看,数据可以从https://c.stockcharts.com/j-sum/sum?cmd=perf&group=SECTOR_DJUSNS获取,它将返回JSON。在该json中,您可以通过访问返回的字典列表中每个字典的sym值来重建url。将sym值连接到https://stockcharts.com/h-sc/ui?s=基本字符串的末尾
例如,用于列表中的第一个字典
https://stockcharts.com/h-sc/ui?s= + sym 给出
https://stockcharts.com/h-sc/ui?s=TKAT基本上,服务器需要一个查询字符串并返回json。页面使用它来更新内容。刷新页面时,可在浏览器的网络选项卡中查看。
您最好寻找一个服务于类似数据的免费API。
https://stackoverflow.com/questions/63604620
复制相似问题