首页 > Windows开发 > 详细

C#应用Selenium学习:读取网页表格

时间:2021-02-13 08:41:32      阅读:33      评论:0      收藏:0      [点我收藏+]

Web网页表格的结构一般为:

table标签:表示表格元素;

tbody标签:表示表格主体;

tr标签:表示表格的一行;

td标签:表示表格的一列。

依据此,可以实现表格解析代码如下:

技术分享图片
        /// <summary>
        /// 解析指定页面中的表格数据,返回的DataTable的类型是element类型
        /// </summary>
        /// <param name="driver"></param>
        /// <returns></returns>
        public List<List<IWebElement>> GetTable(ChromeDriver driver,string url)
        {
            //设置隐式等待指定元素,等待时长为20秒
            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(20);
            driver.Url = url;
            //web页面表格的结构:table(表格)、tbody(表格主体)、tr(表格一行)、td(表格一列)
            var table=driver.FindElementByTagName("table");
            //如果没有找到,或者多于一个,则暂时先不处理
            if ((table is IWebElement) == false) throw new Exception("Ex202102121134:不支持");
            var tbody=table.FindElement(By.TagName("tbody"));

            List<List<IWebElement>> res = new List<List<IWebElement>>();
            //处理每一行
            foreach (var tr in tbody.FindElements(By.TagName("tr")))
            {
                List<IWebElement> row = new List<IWebElement>();
                //处理每一列
                foreach (var td in tr.FindElements(By.TagName("td")))
                {
                    row.Add(td);
                }
                res.Add(row);
            }

            return res;
        }
View Code

如果需要把表格每一个单元格的内容提取出来,可以参考如下代码:

技术分享图片
        /// <summary>
        /// 返回表格的内容
        /// </summary>
        /// <param name="driver"></param>
        /// <param name="url"></param>
        /// <returns></returns>
        public List<List<string>> GetTableText(ChromeDriver driver,string url)
        {
            var elments=this.GetTable(driver, url);
            List<List<string>> res = new List<List<string>>();
            foreach (var row in elments)
            {
                List<string> newRow = new List<string>();
                foreach (var item in row)
                {
                    newRow.Add(item.Text);
                }
                res.Add(newRow);
            }
            return res;
        }
View Code

 

C#应用Selenium学习:读取网页表格

原文:https://www.cnblogs.com/huzhongqiang/p/14399463.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!