【发布时间】:2017-06-27 04:38:26
【问题描述】:
我正在尝试使用 Selenium 和 Python 抓取 [this site][1]。以下是社区帮助下的更新代码:
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
url="http://www.marketsmojo.com/Stocks?StockId=170831&Exchange=0#navFinancialsAnnual"
browser=webdriver.Chrome()
browser.maximize_window()
browser.get(url)
time.sleep(3)
financials = browser.find_element_by_xpath("//div[@id='myNavbar']//a[contains(text(),'Financials')]")
actions = ActionChains(browser)
actions.move_to_element(financials)
actions.perform()
browser.find_element_by_xpath("//a[contains(text(),'Annual Results')]").click()
all_data = browser.find_element_by_xpath("//a[@id='PrevDetails']")
browser.execute_script("window.scrollTo(0, 250);")
all_data.click()
该元素仍然不可见,从错误堆栈中可以看出:
C:\Users\user\Desktop>test.py
Traceback (most recent call last):
File "C:\Users\user\Desktop\test.py", line 13, in <module>
browser.find_element_by_xpath("//a[contains(text(),'Annual Results')]").clic
k()
File "C:\Users\user\AppData\Local\Programs\Python\Python36-32\lib\site-
packages\selenium\webdriver\remote\webelement.py", line 77, in click
self._execute(Command.CLICK_ELEMENT)
File "C:\Users\user\AppData\Local\Programs\Python\Python36-32\lib\site-
packages\selenium\webdriver\remote\webelement.py", line 493, in _execute
return self._parent.execute(command, params)
File "C:\Users\user\AppData\Local\Programs\Python\Python36-32\lib\site-
packages\selenium\webdriver\remote\webdriver.py", line 256, in execute
self.error_handler.check_response(response)
File "C:\Users\user\AppData\Local\Programs\Python\Python36-32\lib\site-
packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotVisibleException: Message: element not visible
【问题讨论】:
-
为什么Selenium 应该点击xpath 元素?您没有在代码中使用任何点击...您能否分享更多关于您想要做什么的详细信息?
-
@SolitaryReaper 您提到的
xpath.//*[@id=PrevDetails]无效。您要准确单击哪个元素?谢谢 -
我希望抓取点击该元素时弹出的表格(参考图片)。已更新点击功能的代码。
-
你能把
browser.find_element_by_xpath('.//*[@id=PrevDetails]')改成browser.find_element_by_xpath(".//*[@id='PrevDetails']").click()或browser.find_element_by_id('PrevDetails').click()告诉我 -
而不是
the table和that element和refer pic您可以考虑更新您的手动步骤吗?谢谢
标签: python selenium web-scraping