我可以使用以下代码捕获一个网站,但是当我尝试使用第二个代码片段中所示的HTML Agility Pack时,出现以下错误。
string strURL = " http://www.donbest.com/mlb/odds/money-lines/";
try
{
WebRequest req = WebRequest.Create(strURL);
StreamReader stream = new StreamReader(req.GetResponse().GetResponseStream());
System.Text.StringBuilder sb = new System.Text.StringBuilder();
string strLine;
while ((strLine = stream.ReadLine()) != null)
{
if (strLine.Length > 0)
sb.Append(strLine + Environment.NewLine);
}
stream.Close();
m_strSite = sb.ToString();
currentSiteData = m_strSite;
}
catch (Exception ex)
{
string exStr = ex.ToString();
}
这是敏捷包代码。
string siteUrl = " http://www.donbest.com/mlb/odds/money-lines";
HtmlAgilityPack.HtmlWeb web = new HtmlWeb();
var doc = await Task.Factory.StartNew(() => web.Load(siteUrl));
foreach (HtmlNode table in doc.DocumentNode.SelectNodes("//table/tbody"))
{
Debug.WriteLine("Found: " + table.Id);
foreach (HtmlNode row in table.SelectNodes("tr"))
{
Debug.WriteLine(row.InnerText.ToString());
string tempRow = row.InnerHtml;
foreach (HtmlNode cell in row.SelectNodes("th|td"))
{
string tempCell = cell.InnerText;
}
}
}
我在web.Load行上收到错误消息。
System.AggregateException “发生一个或多个错误。(发送请求时发生错误。)”
System.AggregateException HResult = 0x80131500 Message =发生一个或多个错误。 (发送请求时发生错误。) 来源= System.Private.CoreLib 堆栈跟踪: 在System.Threading.Tasks.Task
中的MLB_2019_Wagers.Views.MainPage.d__2.MoveNext()1.GetResultCore(Boolean waitCompletionNotification) at System.Threading.Tasks.Task
1.get_Result() 在HtmlAgilityPack.HtmlWeb.Get(Uri uri,String方法,String路径,HtmlDocument文档,IWebProxy代理,ICredentials凭据) 在HtmlAgilityPack.HtmlWeb.LoadUrl处(Uri uri,String方法,IWebProxy代理,ICredentials凭据) 在HtmlAgilityPack.HtmlWeb.Load(Uri uri,String方法) 在HtmlAgilityPack.HtmlWeb.Load(字符串url) 在C:\ Projects2019 \ MLB_2019_Wagers \ MLB_2019_Wagers \ Views \ MainPage.xaml.cs:line 233
内部异常1: HttpRequestException:发送请求时发生错误。
内部异常2: COMException:找不到与此错误代码关联的文本。
'':发现无效字符。
答案 0 :(得分:0)
尝试一下:
string siteUrl = "http://www.donbest.com/mlb/odds/money-lines";
var doc = web.Load(siteUrl);
siteUrl字符串中有多余的空间,我认为您不需要为此启动新任务。