我需要用C#从一个网站上抓取一个表,并将数据导出到pgadmin中作为数据库,以存储数据供以后使用。我尝试过使用不同的方法,我在互联网上看到过,“await”方法似乎是最好的方法。我还没有找到任何使用它的例子,因此下面的代码是我想出的。(我在visual studio中使用windows窗体)
string url = ("internet website here");
WebClient webclient = new WebClient();
string page = webclient.DownloadString(url);
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(page);
List<List<string>> table = doc.DocumentNode.SelectNodes("//*[@id=\"cr_cashflow\"]/div[2]/div/table")
.Descendants("tr")
.Where(tr=>tr.Elements("td").Count() > 0)
.Select(tr => tr.Elements("td").Select(td => td.InnerText.Trim()).ToList())
.ToList();dataGridTable1.Datasource=table
下面是我想写的:
<table class='cr_dataTable>
<tbody>
<tr classs>
<td class>Values</td>
<td class>1,356</td>
<td class>1,256</td>
<td class>1,459</td>
<td class>1,535</td>
我所拥有的是复制表“cr_dataTable”的xpath。
现在来看看这个问题,由于我是编程领域的新手,我还在学习这个方法是如何工作的,代码告诉我:
“系统.空引用异常:'未将对象引用设置为对象的示例。' HtmlAgilityPack.HtmlNode.SelectNodes(...)返回空值。”
我应该如何考虑使用这个方法来查找“cr_dataTable”的值而不返回空值消息呢?在这一点上,我不知道我错过了什么,代码工作。感谢有人知道这是错误的代码,并如何使它工作。
1条答案
按热度按时间vpfxa7rd1#
你可以参考下面的代码。由于我无法得到你的目标网站和网站的html代码,目标网址和xpath需要自己编辑。代码如下: