簡體   English   中英

使用硒webdriver無法在雅虎財務中找到股票價格

[英]can't find stock price in yahoo finance using selenium webdriver

在過去的兩天里,我一直在嘗試尋找一種從Yahoo Finance提取股票數據的方法。 我以前使用過硒網絡驅動程序,我發現它非常有用,但是我似乎無法通過它找到股票價格。 html在finance.yahoo.com中相當復雜,但是我認為您可以隔離標簽,因此我的代碼如下所示:

public void writeSheet() throws WriteException, Exception{
    int r = 0;
    for(String s : listOfFunds){
        Label stockLabel = new Label(0,r,s);
        Number stockPrice = new Number(1,r,0.00);
        driver.get("http://finance.yahoo.com/q?s=" + s + "%2C+&q1=q");
        Thread.sleep(200);
        WebElement price = driver.findElement(By.tagName("span"));
        stockPrice.setValue(Double.parseDouble(price.findElement(By.id("yfs_184_" + s.toLowerCase())).getText()));
        id=\"yfs_184_" + s.toLowerCase() + "\""));
        sourceSheet.addCell(stockLabel);
        sourceSheet.addCell(stockPrice);
        r++;
    }
    sourceBook.write();
    sourceBook.close();
}

我實際上只是在進行檢查,以查看我沒有錯過任何愚蠢的東西,或者是否正在按標簽名稱進行搜索。 我要查找的HTML行如下所示:

<span id="yfs_184_" + insert symbol to lowercase here + ">stock price</span>

我嘗試了一下,效果很好。

WebElement stockpriceText = driver.findElement(By.cssSelector("span[id=\"yfs_l84_ctsh\"]"));
String price = stockpriceText.getText();

輸出: 51.59

我相信您的定位策略有誤。 您正在嘗試首先找到以下范圍:

WebElement price = driver.findElement(By.tagName("span"));

這可能是問題所在。 WebDriver將在頁面上找到第一個<span>元素。 這可能是DOM中的其他范圍。
另外,當您執行此操作時:

price.findElement(By.id("yfs_184_" + s.toLowerCase())).getText();

那時,您試圖在span元素內找到另一個將不起作用的元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM