2015-10-13 76 views
3

我試圖拼湊Quora答案。 考慮到這個鏈接,例如: https://www.quora.com/Is-it-too-late-for-an-X-year-old-to-learn-how-to-program從Quora中提取「(more)」文本Selenium - Python

首先尋找的答案,有一個「更多」標籤巫表示更多的文字隱藏的存在。

問題 在Python中使用硒我無法打開並從此項中提取文本。

我嘗試... 我也嘗試用JavaScript來點擊鏈接「查看更多」這個istruction:

try: 
     if ans.find_element_by_xpath('.//a[contains(@class, "more_link")]').is_displayed(): 
        elem_more = ans.find_element_by_xpath('.//a[contains(@class, "more_link")]') 
        #self.driver.execute_script("arguments[0].click();", elem_more) 
        Hover = webdriver.ActionChains(self.driver).move_to_element(elem_more) 
        Hover.click(elem_more).perform() 
        #wait_1.until(EC.invisibility_of_element_located((By.CLASS_NAME, "switch_indicator"))) 
    except (NoSuchElementException,TimeoutException) as e: 
     pass 

而且後坐回答的內容與

content = ans.find_element_by_xpath('.//span[contains(@class, "inline_editor_value")]') 

這適用於「更多」的答案becouse是我用來從任何答案中提取文本的相同容器。

enter image description here

回答

0

點擊more按鈕後,你可以在這個CSS路徑'.inline_editor_value > div > div'

>>> c = driver.find_element_by_css_selector('.inline_editor_value > div > div').text 
>>> print len(c) 
3491 
>>> driver.find_element_by_class_name("more_link").click() 
>>> c_new = driver.find_element_by_css_selector('.inline_editor_value > div > div').text 
>>> print len(c_new) 
9642 
+1

我嘗試使用此解決方案存在的整篇文章,但還是不行。 他不接受文字內容。 –

+0

我成功了。檢查shell輸出。使你的代碼比添加try塊簡單。 –