2017-08-01 56 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