首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >网页抓取- StockCharts - getElementsByTagName ("a")

网页抓取- StockCharts - getElementsByTagName ("a")
EN

Stack Overflow用户
提问于 2020-08-27 03:36:15
回答 1查看 174关注 0票数 0

我正在尝试获取此网站上的列名的内部文本和href属性:

https://stockcharts.com/freecharts/sectorsummary.html?&G=SECTOR_DJUSNS&O=1

但是我得到了所有的超链接,除了表中的那些。

有没有人可以看看这段代码,让我知道哪里出了问题?

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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=基本字符串的末尾

例如,用于列表中的第一个字典

代码语言:javascript
复制
https://stockcharts.com/h-sc/ui?s=   + sym 

给出

代码语言:javascript
复制
https://stockcharts.com/h-sc/ui?s=TKAT

基本上,服务器需要一个查询字符串并返回json。页面使用它来更新内容。刷新页面时,可在浏览器的网络选项卡中查看。

您最好寻找一个服务于类似数据的免费API。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63604620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档