2017-08-01 57 views
2

我已經在python中與Selenium一起編寫了一個腳本,以提取顯示在finance.yahoo網站左側欄中的不同新聞的標題。我用CSS選擇器來獲取內容。但是,腳本既沒有給出任何結果,也沒有發生任何錯誤。我無法弄清楚我犯的錯誤。希望有人會看看它。提前致謝。刮刀無法從網站中提取標題

這裏是我的腳本:

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

driver = webdriver.Chrome() 
driver.get("https://finance.yahoo.com/") 
wait = WebDriverWait(driver, 10) 
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "u.StretchedBox"))) 
for item in driver.find_elements_by_css_selector("u.StretchedBox span"): 
    print(item.text) 
driver.quit() 

元素在其中標題是:

<h3 class="M(0)" data-reactid="128"><a rel="nofollow noopener noreferrer" class="Fw(b) Fz(20px) Lh(23px) LineClamp(2,46px) Fz(17px)--sm1024 Lh(19px)--sm1024 LineClamp(2,38px)--sm1024 Td(n) C(#0078ff):h C(#000)" target="_blank" href="https://beap.gemini.yahoo.com/mbclk?bv=1.0.0&amp;es=bVwDtPMGIS8NDKqncZWZBjLsQQHm58Z9cLJuMqC6LadDlYfVCoy.d3GqO599EPAiYnsxB0SB8aRURPve9Q8mOEjH.NrcVcVDhldut.C_9Vn16XER1q1G07a48FMQ_.sv9GCyVx7zcj1kBtWPysaYzQqboJWgUo5DRRHbAnejwVtYRPHJTEptil92tx_ccJZ9FnxE8L3tfDuS0Q3l5ftVhamTOon_nzuvtvqqBwD7X0T.7Z3wZBgtH93gM1xImZ0hdFUzsuQPDAjZWs1KdH0YsXIf3uLrmcJFoI9leh8KRljnIPC.RdhOF6OYcJfHtDks85nSIgfOsMyUr1wEhMA2Qa2htpEg5w.P4UIXeoldjzJ_NsUrtXqEFIJNKoaeq_FNiQ9wcI16utKO87167zkfSPzVY09d3pVLZg20V7tqTThOkG_IakPnmlOriJKnufsBWj1wp.6Q4PasAt2g4Y1yw9U71FIfG2dDwpryRKDWrUBfTvjwwItlSyXyvWvIYUyXXxR74qWcIEC3KAvVN7.iqSckV_EssVM8ytp5HiN4iTACpEmc96rpdNEqHYpRotwze8NF5cDubsZbW58Hauq_aO.DbhZJ7TbBDx5vZK_M%26lp=https%3A%2F%2Fin.search.yahoo.com%2Fsearch%3Fp%3Dcheap%2Bairfare%2Bdomestic%26fr%3Dstrm-tts-thg%26.tsrc%3Dstrm-tts-thg%26type%3Dcheapairfaredomestic-in" data-reactid="129"> 


<u class="StretchedBox" data-reactid="130"></u> 

<span data-reactid="131">The Cheapest Domestic Airfare Rates</span></a></h3> 
+0

我沒有看到任何網站上的'span'內'u'。你能把你感興趣的價值截圖嗎? –

回答

2

你沒有得到既不錯誤,也沒有結果,因爲:

  • find_elements_...()法打算向您返回list。如果你的選擇器不匹配你不會得到錯誤,只是一個空的列表。此外,如果試圖通過空單重複,你不會得到錯誤
  • 你的CSS選擇器應符合span是與屬性class="StretchedBox"u後裔,但實際上需要span後裔,但兄弟

嘗試使用下面的代碼:

for item in driver.find_elements_by_css_selector("u.StretchedBox+span"): 
    print(item.text) 
+0

謝謝先生安德森,爲您解答。你的答案永遠不會令我驚歎。它確實獲取上述標題,但不是所有標題。 – SIM

+1

似乎並不是所有的標題都位於'span'內。嘗試使用'XPath'而不是CSS選擇器:'// a [u [@ class =「StretchedBox」]]' – Andersson

+0

再一次,你讓我傻眼了先生。它有訣竅。你總是想出新的東西。你能否讓我理解一個班輪的解釋 - 爲什麼「你」在「方括號」內標記?再次感謝一位先生。 – SIM