[英]Selenium chromedriver for retrieving current value of dropdown table <tbody> data from a Webpage and export in csv file
網址的表結構如下。
<body>
<div class="marketData-inputSelect">
<select class="js-select js-optionsDataFilter">
<option value="total_volume">Total Options</option>
<option value="equity_volume">Equity Options</option>
<option value="index_volume">Index/Other Options</option>
</select>
</div>
<table class="marketData-table marketData-table--active marketData-table--border marketData-table--padded marketData-table--auto table-responsive">
<span class="table-head__cond">
<thead>
<tr class="marketData-tableRow">
<th class="marketData-tableHeading"><span class="text">Exchange</span><!----></th>
<th class="marketData-tableHeading"><span class="text">Calls</span><!----></th>
<th class="marketData-tableHeading"><span class="text">Puts</span><!----></th>
<th class="marketData-tableHeading"><span class="text">P/C Ratio</span><!----></th>
<th class="marketData-tableHeading"><span class="text">Volume</span><!----></th>
<th class="marketData-tableHeading"><span class="text">Market Share</span><!----></th>
</tr>
</thead></span>
<tbody>
<tr class="marketData-tableRow marketData-tableRow--fill">
<td class="marketData-tableItem">AMEX</td>
<td class="marketData-tableItem">1,397,381</td>
<td class="marketData-tableItem">1,261,149</td>
<td class="marketData-tableItem">0.9</td>
<td class="marketData-tableItem">2,658,530</td>
<td class="marketData-tableItem">6.73%</td>
</tr>
</tbody><!----><!----><!---->
</table>
</body>
我正在嘗試的代碼僅獲取第一個選項Total Options
數據。 dropdown
當前<tbody>
數據的其他兩個選項值未獲取。 在每個下拉菜單中, <tbody>
數據不同,所有三個菜單的表結構相同,只是數據不同。 你能幫我修改代碼以get current value of dropdown menu
在此先感謝!
var dropdownText = driver.FindElement(By.XPath("//select"));
var dropdownSelect = new SelectElement(dropdownText);
var dropdownSelectvalue = dropdownSelect.SelectedOption.GetAttribute("value");
if (driver.FindElement(By.XPath("//table/span/thead/tr/th")).Displayed)
{
IWebElement webElementHead = driver.FindElement(By.XPath("//table/span/thead/tr"));
IList<IWebElement> ElementCollectionHead = webElementHead.FindElements(By.XPath("//table/span/thead/tr/th"));
foreach (IWebElement item in ElementCollectionHead)
{
Console.WriteLine(item.Text);
}
}
if (driver.FindElement(By.XPath("//table/tbody/tr")).Displayed)
{
IWebElement webElementBody = driver.FindElement(By.XPath("//table/tbody/tr"));
IList<IWebElement> ElementCollectionBody = webElementBody.FindElements(By.XPath("//table/tbody/tr"));
foreach (IWebElement item in ElementCollectionBody)
{
string[] arr = new string[4];
arr = item.Text.Split(' ');
for (int i = 0; i < arr.Length; i++)
{
Console.WriteLine(arr[i]);
}
}
}
我正在嘗試在Console
中成功顯示所有數據以獲取Total Options
。 您能否store the data
在.csv
文件中,我正在搜索我們可以使用FileStream
執行但無法成功。
FileStream fs =new FileStream((".csv"),FileMode.Create);
StreamWriter sw=new StreamWriter(fs);
sw.WriteLine();
sw.Close();
sw.Dispose();
不確定上面的FileStream
代碼。
你應該看看 HTMLAgityPack。 使用 HTMLAgityPack,我會將 driver.Pagesouce 加載到一個新的 HTML 文檔中,然后執行如下操作: var marketData = html.DocumentNode.SelectNodes("//td[@marketData-tableItem']");
. 然后您可以對市場數據運行 for 循環: foreach(var data in marketData){string x = data.innerText;}
下面的代碼是用 Java 編寫的,將此代碼修改為 C#,但您可以使用這些相同的定位器:
driver.get("<URL>");
// to accept cookies
driver.findElement(By.xpath(".//*[text()='Accept analytic cookies']")).click();
// to click on the view button
driver.findElement(By.cssSelector(".marketData-inputBtn")).click();
// to print the headings
List<WebElement> headings = driver.findElements(By.xpath("(.//*[@class='marketData-resultsSection'])[2]//th/span"));
for (WebElement ele : headings) {
System.out.print(ele.getText() + " | ");
}
System.out.println();
// to print the data
List<WebElement> data = driver.findElements(By.xpath("(.//*[@class='marketData-resultsSection'])[2]//td"));
int i = 0;
for (WebElement ele : data) {
i++;
System.out.print(ele.getText() + " | ");
if (i == 6) {
i = 0;
System.out.println();
}
}
輸出:
Exchange | Calls | Puts | P/C Ratio | Volume | Market Share |
AMEX | 1,829,955 | 1,645,962 | 0.9 | 3,475,917 | 7.23% |
...
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.