HtmlAgilityPack 抓取 - 从 html 文档中提取特定节点
HtmlAgilityPack scraping - extracting specific nodes from html document
如果已经回答了,请提前致歉(如果是请指出正确的位置),我在这里、网络、youtube 等搜索了两天,仍然没有找到答案。
我想从以下 url 中提取一些数据:https://betcity.ru/en/results/sp_fl=a:46;
我正在尝试获取当天的所有事件名称(第一个是:
Ho Kwan Kit/Wong Chun Ting — Fan Zhendong/Xu Xin 及其之后的所有其他人)。当我检查该元素时,我可以看到 html:
的这一部分
<div class="content-results-data__event"><span>Ho Kwan Kit/Wong Chun Ting — Fan Zhendong/Xu Xin</span></div>
我正在考虑使用 class="content-results-data__event" 获取所有 div,而不是从那些 div 获取内部文本。每次我 运行 我的代码都得到零结果。当我看到 div 这样的 class 存在时,为什么我没有得到任何节点,我怎样才能得到所有事件(如果我学会了如何去做,我可以获得我需要的其他信息从这个网站)。这是我的代码(不得不说我对此很陌生)。
public partial class Scrapper : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
List<string> Events = new List<string>();
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = NewMethod(web);
var Nodes = doc.DocumentNode.SelectNodes(xpath: "//div[@class='content - results - data__event'']").ToList();
foreach (var item in Nodes)
{
Events.Add(item.InnerText);
}
GridView1.DataSource = Events;
GridView1.DataBind();
}
private static HtmlDocument NewMethod(HtmlAgilityPack.HtmlWeb web)
{
return web.Load("https://betcity.ru/en/results/sp_fl=a:46;");
}
}
}
以下是如何使用 Selenium 获取一天比赛的 HTML。其余的是 HtmlAgilityPack。该站点使用自签名证书,因此我必须将驱动程序配置为接受自签名证书。玩得开心。
var ffOptions = new FirefoxOptions();
ffOptions.BrowserExecutableLocation = @"C:\Program Files (x86)\Mozilla Firefox\firefox.exe";
ffOptions.LogLevel = FirefoxDriverLogLevel.Default;
ffOptions.Profile = new FirefoxProfile { AcceptUntrustedCertificates = true };
var service = FirefoxDriverService.CreateDefaultService();
var driver = new FirefoxDriver(service, ffOptions, TimeSpan.FromSeconds(120));
string url = "https://betcity.ru/en/results/date=2017-11-19;"; //remember to update the date accordingly.
driver.Navigate().GoToUrl(url);
Thread.Sleep(2000);
Console.Write(driver.PageSource);
如果已经回答了,请提前致歉(如果是请指出正确的位置),我在这里、网络、youtube 等搜索了两天,仍然没有找到答案。
我想从以下 url 中提取一些数据:https://betcity.ru/en/results/sp_fl=a:46;
我正在尝试获取当天的所有事件名称(第一个是: Ho Kwan Kit/Wong Chun Ting — Fan Zhendong/Xu Xin 及其之后的所有其他人)。当我检查该元素时,我可以看到 html:
的这一部分<div class="content-results-data__event"><span>Ho Kwan Kit/Wong Chun Ting — Fan Zhendong/Xu Xin</span></div>
我正在考虑使用 class="content-results-data__event" 获取所有 div,而不是从那些 div 获取内部文本。每次我 运行 我的代码都得到零结果。当我看到 div 这样的 class 存在时,为什么我没有得到任何节点,我怎样才能得到所有事件(如果我学会了如何去做,我可以获得我需要的其他信息从这个网站)。这是我的代码(不得不说我对此很陌生)。
public partial class Scrapper : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
List<string> Events = new List<string>();
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = NewMethod(web);
var Nodes = doc.DocumentNode.SelectNodes(xpath: "//div[@class='content - results - data__event'']").ToList();
foreach (var item in Nodes)
{
Events.Add(item.InnerText);
}
GridView1.DataSource = Events;
GridView1.DataBind();
}
private static HtmlDocument NewMethod(HtmlAgilityPack.HtmlWeb web)
{
return web.Load("https://betcity.ru/en/results/sp_fl=a:46;");
}
}
}
以下是如何使用 Selenium 获取一天比赛的 HTML。其余的是 HtmlAgilityPack。该站点使用自签名证书,因此我必须将驱动程序配置为接受自签名证书。玩得开心。
var ffOptions = new FirefoxOptions();
ffOptions.BrowserExecutableLocation = @"C:\Program Files (x86)\Mozilla Firefox\firefox.exe";
ffOptions.LogLevel = FirefoxDriverLogLevel.Default;
ffOptions.Profile = new FirefoxProfile { AcceptUntrustedCertificates = true };
var service = FirefoxDriverService.CreateDefaultService();
var driver = new FirefoxDriver(service, ffOptions, TimeSpan.FromSeconds(120));
string url = "https://betcity.ru/en/results/date=2017-11-19;"; //remember to update the date accordingly.
driver.Navigate().GoToUrl(url);
Thread.Sleep(2000);
Console.Write(driver.PageSource);