Получить таблицу с веб-страницы - PullRequest
2 голосов
/ 09 марта 2020

Я пытаюсь получить таблицу с веб-страницы с помощью веб-драйвера Selenium. Сначала я захожу на веб-страницу, затем перехожу на веб-страницу с таблицей.

Проблема в том, что в таблице нет тегов td, а исходный код веб-страницы выглядит следующим образом:

enter image description here

C# код:

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System;
using System.Collections.Generic;

namespace Table_Scrape
{
    class Program
    {
        static void Main(string[] args)
        {

            IWebDriver driver = new ChromeDriver();
            driver.Navigate().GoToUrl("https://website.com/login");
            driver.FindElement(By.Id("username")).SendKeys("MYusername");
            driver.FindElement(By.Id("password")).SendKeys("MYpassword");
            driver.FindElement(By.Id("btnSubmit_6")).Click();

            driver.FindElement(By.Id("btnContinue")).Click();

            driver.Navigate().GoToUrl("https://website.com/table");

            IList<IWebElement> allElement = driver.FindElements(By.TagName("td"));
            foreach (IWebElement element in allElement)
            {
                string cellText = element.Text;
                Console.WriteLine(cellText);
            }

        }
    }
}

У кого-нибудь есть предложения по извлечению данных с веб-страницы?

Структура таблицы то же самое для каждого ряда. Столбцы похожи на slick-cell 10 r0, slick-cell 10 r1 et c.


РЕДАКТИРОВАТЬ:

Консольный вывод:

DevTools listening on ws://xxxx:xxx/devtools/browser/0a02f6b7-3c33-41ea-b0b3-fb67d3f436c7
[1583946337.939][WARNING]: Timed out connecting to Chrome, retrying...
[1583946340.587][SEVERE]: Timed out receiving message from renderer: 0.100
[1583946343.800][SEVERE]: Timed out receiving message from renderer: 0.100
[1583946343.903][SEVERE]: Timed out receiving message from renderer: 0.100
[1583946344.024][SEVERE]: Timed out receiving message from renderer: 0.100
[1583946345.482][SEVERE]: Timed out receiving message from renderer: 0.100
[1583946345.583][SEVERE]: Timed out receiving message from renderer: 0.100
[1583946347.170][SEVERE]: Timed out receiving message from renderer: 0.100

Ответы [ 2 ]

0 голосов
/ 10 марта 2020

Вместо IList<IWebElement> allElement = driver.FindElements(By.TagName("td")); я бы использовал IList<IWebElement> allElement = driver.FindElements(By.Xapth("//div[contains(@class,'slick-cell')]")); Однако, если это имя класса не уникально, тогда потребуется другой подход. Если это так. дайте мне знать, и нам, вероятно, потребуется сделать это через parent div>child div в зависимости от того, какую таблицу вы хотите перебрать.

0 голосов
/ 09 марта 2020

Вам нужно l oop пройти через все элементы, которые имеют класс "slick-cell". Вот ссылка на код для этого: { ссылка }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...