簡體   English   中英

刮滑台os Selenium

[英]Scraping a sliding table os Selenium

我正在嘗試從網站上的滑動表中獲取數據(例如某些網站上的股票市場價格)。

我正在使用這條線:

elem=driver.find_elements_by_xpath('/html/body/div[1]/div/div/article/div/div/div/div/div[1]/div/div/aside/div/div/div/ul/li')

似乎將所有元素都添加到列表中就好了。 但是,一旦我使用列表中的任何方法,我們就說:

for i in elem:
    print(i.text)

它實際上只是返回在那一刻可見的值。

有人可以幫忙嗎?

因此,在大多數情況下,請按以下順序嘗試:

getText()如果它不起作用使用getAttribute('textContent')如果它也不起作用使用getAttribute('value')

getAttribute('value') 僅在您的元素中有一個名為 value 的屬性(如 id、name 等)時才有效

所以在大多數情況下,如果 getText 不起作用,請使用.getAttribute('textContent')使用:

 i.get_attribute("textContent")

因為 getText 或 text() 實際上使用的是 innerText,並且不會從隱藏元素中檢測文本。

不要對 Node.textContent 和 HTMLElement.innerText 之間的區別感到困惑。 盡管名稱看起來相似,但有重要的區別:

textContent 獲取所有元素的內容,包括和元素。 相反,innerText 只顯示“人類可讀”的元素。

textContent 返回節點中的每個元素。 相反,innerText 知道樣式並且不會返回“隱藏”元素的文本。

此外,由於 innerText 將 CSS styles 考慮在內,讀取 innerText 的值會觸發回流以確保最新計算的 styles。 (回流可能在計算上很昂貴,因此應盡可能避免。)

與 textContent 不同,在 Internet Explorer(版本 11 及更低版本)中更改 innerText 會從元素中刪除子節點並永久銷毀所有后代文本節點。 這樣做后不可能再次將節點插入到任何其他元素或同一元素中

https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent

嘗試

for i in elem:
    print(i.get_attribute('textContent'))

也從隱藏元素中獲取文本

暫無
暫無

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

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