我正在制作程序,它将显示表格中的文字。结构就像那样。 有两个表,但我想从第二个表中获取文本。
我的表数据如下所示:
我想显示第二个表的每一行的前三列。 为此我尝试了这样。
HtmlWeb web = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = web.Load("http://www.banglaeye.com/baby-names/index.php");
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//div[@class='col_box']/table[2]/tr/td");
try
{
foreach (HtmlNode n in nodes)
{
if (k != 0)
{
link = n.InnerHtml;
my_link.Add(link);
MessageBox.Show(link);
}
k++;
}
}
catch (NullReferenceException)
{
MessageBox.Show("No link found");
}
我发现此URL执行http post方法。但是Html Agility包不提供任何Http post方法。那怎么能实现我的目标呢?
答案 0 :(得分:1)
在浏览器用户点击“搜索”按钮之前,不会填充要抓取其内容的表格。如果有人要正常导航到该URL,则在按下按钮之前,他们不会在表中看到任何条目。这就是HTMLAgilityPack只能看到第一行的原因。单击该按钮,执行HTTP POST:
letter=All&gender_id=0&origin_id=0&submit=search
您的程序必须执行此请求,然后使用HtmlDocument
而不是doc.LoadHtml()
将结果加载到doc.Load()
。
以下是一些其他Stack Overflow问题,您可以参考这些问题来完成这两项任务: