当使用c#和HTML敏捷包时,无法从NBA.com检索投篮位置数据

本文关键字:com NBA 检索 置数据 位置 HTML 包时 | 更新日期: 2023-09-27 18:08:03

我想从NBA.com, CBSsports.com和espn.go.com等网站的HTML网页中检索投篮位置数据集,然后做一些数据分析。

我的问题是我无法检索我需要的数据,而使用c#在HTML Agility Pack的帮助下进行HTML抓取。

。例如,以下是CBS体育频道2013年4月7日LAL和LAC的比赛追踪器。链接地址为,http://www.cbssports.com/nba/gametracker/live/NBA_20130407_LAL@LAC。

我尝试捕捉球场图上那些红色x点和绿色O点的x和y坐标值。

(很抱歉,由于声誉有限,我不能在这里发布图片)

Safari网页检查器用于随机获取其中一个点。它表明,

<div class="homeShot made" playerid="555969" period="1" type="1" ypos="-17" xpos="-1" result="1" time="4:37" distance="25" style="right: 165.53191489361703px; top: 161.6px; "></div>

注意到HTML中的" ypos "answers" xpos "正是我想要的。

然后我用c#和HTML敏捷包来检索它们。

c#代码:

    string link = "http://www.cbssports.com/nba/gametracker/live/NBA_20130407_LAL@LAC";
    HtmlWeb hw = new HtmlWeb();
    HtmlDocument doc = hw.Load(link);
    HtmlNodeCollection items = doc.DocumentNode.SelectNodes("//div[@class= 'homeShot made']");
    foreach (HtmlNode item in items) 
    {
        // blablabla
    }

但是在visual studio中弹出错误消息,告诉我"items reference是null"。

我如何以正确的方式修复它?

。另一个问题是在NBA.com上。(很抱歉,由于信誉有限,我不能发布第二个链接)

同样,Safari网页检查器被用来随机获得红色和绿色的点之一。它表明,

<image x="385.12" y="218.3404255319149" width="16" height="16" preserveAspectRatio="none" href="/media/shotchart_legend_o.png"></image>

我注意到它在SVG中是有界的

<svg height="613" version="1.1" width="652" xmlns="http://www.w3.org/2000/svg" style="overflow: hidden; position: relative; ">...</svg>

我如何使用c#(有或没有HTML敏捷包)来获得所有的x和y数据,如"x="385.12"y="218.3404255319149"?

D

当使用c#和HTML敏捷包时,无法从NBA.com检索投篮位置数据

你给的链接返回的HTML没有任何div class= 'homeShot made'里面。如果使用浏览器检查HTML,那么查看的是DOM在内存中的表示形式,而不是文件的内容。Html敏捷包只处理原始的Html输入,它不是一个浏览器。

如果你做一个视图源,你可以确认。

所以,如果内容是由一些javascript代码构建的,你必须使用嵌入式浏览器控件,而不是静态工具,如Html Agility Pack