使用 Selenium 从 Quora 中提取“(更多)”文本 - Python

Posted

技术标签:

【中文标题】使用 Selenium 从 Quora 中提取“(更多)”文本 - Python【英文标题】:Extract "(more)" text with Selenium from Quora - Python 【发布时间】:2016-01-11 11:09:27 【问题描述】:

我正在尝试抓取 Quora 的答案。 例如考虑这个链接: https://www.quora.com/Is-it-too-late-for-an-X-year-old-to-learn-how-to-program

看第一个答案,有一个“更多”标签,表示存在更多隐藏的文本。

问题 在 Python 中使用 Selenium 我无法打开并从该项目中提取文本。

我试试…… 我还尝试使用 javascript 单击此指令的“显示更多”链接:

   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")]')

这适用于没有“更多”的答案,因为它是我用来从任何答案中提取文本的容器。

【问题讨论】:

【参考方案1】:

点击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

【讨论】:

我尝试使用此解决方案,但仍然无法正常工作。他不接受文本内容。 我成功了。检查外壳输出。让你的代码比添加 try 块更简单。

以上是关于使用 Selenium 从 Quora 中提取“(更多)”文本 - Python的主要内容,如果未能解决你的问题,请参考以下文章

selenium.common.exceptions.NoSuchElementException 使用 Selenium Python 从#shadow-root (open) 中提取元素文本时出错

Selenium/python:每次滚动后从动态加载的网页中提取文本

从URL中提取数据以在selenium测试中使用

PYTHON + SELENIUM(CHROME):如何从当前网址中提取特定文本并使用提取的文本转到另一个文本?

如何使用Selenium Python从reddit.com搜索页面上的问题中提取title和href属性

使用 Selenium 提取 span 文本内容