C# HtmlAlityPack和XPath目标
我有以下HTML:C# HtmlAlityPack和XPath目标,c#,xpath,web-scraping,html-agility-pack,C#,Xpath,Web Scraping,Html Agility Pack,我有以下HTML: <table> <tr> <td><a href="#">Tournament Name</a> <br /> Tournament Address </td> </tr> <tr> <td><a>View Available Space and Book Onli
<table>
<tr>
<td><a href="#">Tournament Name</a>
<br /> Tournament Address </td>
</tr>
<tr>
<td><a>View Available Space and Book Online</a></td>
</tr>
<tr>
<td>
<em>Event Cost:</em> $$$
</td>
<td> Date and Time </td>
</tr>
<tr>
<td>
<p>
<strong>
<img title="Boy's Teams can enter this tournament" />
<img title="Girl's Teams can not enter this tournament" />
<img title="Disabled Teams can not enter this tournament" />
</strong>
</p>
</td>
<td>
TimeFrame
</td>
</tr>
<tr>
<td>
<img src="image.gif" />
<img src="image.gif" />
<img src="image.gif" />
<img src="image.gif" />
<img src="image.gif" />
<img src="image.gif" />
<img src="image.gif" />
<img src="image...." />
<img src="image...." />
<img src="image...." />
<img src="image...." />
</td>
</tr>
</table>
比赛地址
查看可用空间并联机预订
活动费用:$$$
日期和时间
(此表在页面上重复多次)
我正在尝试提取锦标赛名称。
我有以下C#代码:
namespace AcademyScraper
{
公共部分类Main:表单
{
公用干管()
{
初始化组件();
}
私有void saveBtn_单击(对象发送方,事件参数e)
{
字符串url=”http://www.reddishvulcans.com/uk_tournament_database.asp";
var Webget=new HtmlWeb();
var doc=Webget.Load(url);
var root=doc.DocumentNode;
var nodes=root.subjects();
HtmlNodeCollection tableCollection=doc.DocumentNode.SelectNodes(“//div[@class='infobox']/table”);
对于(Int32 i=0;i
我遇到的问题是,无论我尝试什么,我似乎都无法瞄准包含锦标赛名称的标记。如果我执行
MessageBox.Show(tableCollection[I].OuterHTML)代码>,表内容将在messagebox内呈现良好,不会出现任何问题。但是,每当我尝试获取tournamentName时,都会出现引用异常。基于HTML,我认为它应该是正确的。您有一项任务,即使用网络var doc=Webget.Load(url)代码>它可以使一些时间,但你得到它在主线程
->冲突。您需要在其他线程中运行网络任务。注意MessageBox.Show(tournamentName.InnerText)
是UI线程(主线程),您应该在INVOKE
delegate中运行它。也许您可以尝试类似的方法(我创建了一个控制台应用程序来尝试):
以下XPath对我来说似乎很好:
//div[@class='infobox']/table/tr/td[br]/a
string url = "http://www.reddishvulcans.com/uk_tournament_database.asp";
var Webget = new HtmlWeb();
var doc = Webget.Load(url);
//print top 10 result just for the sake of demo
var result = doc.DocumentNode
.SelectNodes("//div[@class='infobox']/table/tr/td[br]/a")
.Take(10);
foreach (HtmlNode node in result)
{
Console.WriteLine(node.InnerText);
}
The North West Junior Champions League 2016
PLAY AT CHELSEA - STAMFORD BRIDGE FOOTBALL TOURNAMENT 2016
PLAY AT FC BARCELONA - CAMP NOU FOOTBALL TOUR 2016 - THE EUROPA CUP
Silverdale Soccersevens XIX
NORTH HALIFAX MINI SOCCER TOURNAMENT 2016
Halton & District JFL Mini Soccer Tournament
Colwyn Bay FC Junior Tournament
GMCJFC Pat Mangan Festival of Football 2016
Fred England Trophy
Fred England Trophy
控制台应用程序演示:
//div[@class='infobox']/table/tr/td[br]/a
string url = "http://www.reddishvulcans.com/uk_tournament_database.asp";
var Webget = new HtmlWeb();
var doc = Webget.Load(url);
//print top 10 result just for the sake of demo
var result = doc.DocumentNode
.SelectNodes("//div[@class='infobox']/table/tr/td[br]/a")
.Take(10);
foreach (HtmlNode node in result)
{
Console.WriteLine(node.InnerText);
}
The North West Junior Champions League 2016
PLAY AT CHELSEA - STAMFORD BRIDGE FOOTBALL TOURNAMENT 2016
PLAY AT FC BARCELONA - CAMP NOU FOOTBALL TOUR 2016 - THE EUROPA CUP
Silverdale Soccersevens XIX
NORTH HALIFAX MINI SOCCER TOURNAMENT 2016
Halton & District JFL Mini Soccer Tournament
Colwyn Bay FC Junior Tournament
GMCJFC Pat Mangan Festival of Football 2016
Fred England Trophy
Fred England Trophy
输出:
//div[@class='infobox']/table/tr/td[br]/a
string url = "http://www.reddishvulcans.com/uk_tournament_database.asp";
var Webget = new HtmlWeb();
var doc = Webget.Load(url);
//print top 10 result just for the sake of demo
var result = doc.DocumentNode
.SelectNodes("//div[@class='infobox']/table/tr/td[br]/a")
.Take(10);
foreach (HtmlNode node in result)
{
Console.WriteLine(node.InnerText);
}
The North West Junior Champions League 2016
PLAY AT CHELSEA - STAMFORD BRIDGE FOOTBALL TOURNAMENT 2016
PLAY AT FC BARCELONA - CAMP NOU FOOTBALL TOUR 2016 - THE EUROPA CUP
Silverdale Soccersevens XIX
NORTH HALIFAX MINI SOCCER TOURNAMENT 2016
Halton & District JFL Mini Soccer Tournament
Colwyn Bay FC Junior Tournament
GMCJFC Pat Mangan Festival of Football 2016
Fred England Trophy
Fred England Trophy