[英]C# HtmlAgilityPack Get Table
我只是想学习HTMLAgilityPack。 我要从完整表中获取数据吗? (演员名称和角色名称列表)在imdb站点中。
样品胶卷; http://www.imdb.com/title/tt0482571
元素: http : //prntscr.com/al6jc9
我确定元素。 如何使用GridControl对象将此数据传输到DevExpress? 我在gridcontrol中有两列。 (演员,角色)
我目前有以下代码;
DataTable dt = new DataTable();
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
var _gts = doc.DocumentNode.SelectNodes("//table[@id='cast_list']tbody//tr//actor");
foreach (var item in _gts)
{
var s = item.Elements("name").ToList();
foreach (var item2 in s)
{
dd.Add(item2.InnerText)
}
}
我想得到完全像这样的结果;
prntscr.com/al7b83
我相信您可能已经知道了,但是为了完整起见:
using HtmlAgilityPack;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
WebClient wc = new WebClient();
string html = wc.DownloadString("http://www.imdb.com/title/tt0482571/");
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
var castListRows = doc.DocumentNode.SelectNodes("//table[@class='cast_list']/tr");
foreach (var castListRow in castListRows)
{
var nameNode = castListRow.Descendants().Where(n => n.Attributes.Contains("itemprop") && n.Attributes["itemprop"].Value == "name").FirstOrDefault();
if (nameNode != null)
{
var characterCell = castListRow.CreateNavigator().Select("td[@class='character']/div/a");
if (characterCell.MoveNext())
{
Console.WriteLine("Actor={0}, Character={1}", nameNode.InnerText, characterCell.Current.InnerXml);
}
}
}
Console.ReadKey();
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.