Selenium webdriver를 사용하여 웹 페이지에서 테이블을 가져 오려고합니다. 먼저 웹 페이지에 로그인 한 다음 테이블이있는 웹 페이지로 이동합니다.
문제는 테이블에 td
태그가없고 웹 페이지 소스 코드가 다음과 같이 보인다는 것입니다.
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
등
편집하다:
콘솔 출력 :
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
대신 IList<IWebElement> allElement = driver.FindElements(By.TagName("td"));
사용할 것입니다 IList<IWebElement> allElement = driver.FindElements(By.Xapth("//div[contains(@class,'slick-cell')]"));
그러나이 클래스 이름이 고유하지 않으면 다른 접근 방식이 필요합니다. 그럴 경우. 알려 주시면 parent div>child div
반복하려는 테이블을 열어서 수행해야 할 것입니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다