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

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

 

posted @ 2021-02-12 22:30  顺其自然,道法自然  阅读(582)  评论(0编辑  收藏  举报