Проблема заключается в том, что в DIV
которое содержит id=advanced_div
. Вы можете увидеть HTML для этого тега ниже, обратите внимание на стиль display:none
.
<div id="advanced_div" style="display: none;">
Хотя глядя на страницу, я заметил, что есть «Переключить на Advanced Game Log» ссылка на страницу, и я нажал ее. Когда я это сделал, стало видно, что DIV
стало видимым, что означало, что теперь отображается ссылка CSV, которую вы хотите.
Чтобы сделать это с кодом, вам нужно нажать на ту же ссылку, а затем нажать на ссылку CSV, которую вы хотите. Вы можете использовать XPath, который у вас есть в вашем коде ... или ... вы можете использовать find_element_by_link_text()
, который, я думаю, упрощает эту задачу. Код ниже должен работать.
url = "http://www.basketball-reference.com/players/a/acyqu01/gamelog/2015/"
driver = webdriver.Firefox()
driver.get(url)
driver.find_element_by_link_text("Switch to Advanced Game Log").click()
driver.find_element_by_link_text("CSV").click()
Мое единственное беспокойство заключается в том, что текст ссылки CSV может быть не уникальным. Если это так, вы можете использовать свой XPath, как показано ниже.
driver.find_element_by_link_text("Switch to Advanced Game Log").click()
driver.find_element_by_xpath(".//*[@id='advanced_div']/div[2]/div/span[6]").click()
В общем, то, что вы хотите делать, когда вы пишете автоматизации, чтобы выяснить, что нужно сделать пользователю на странице, а затем написать код, который делает то же самое. Таким образом, когда вы сталкиваетесь с каким-то элементом, который скрыт, как в этом случае, выясните, как пользователь сделает его видимым, а затем сделает это с помощью кода.
Я изменил ответ - не нужно js, задайте профиль профиля ff, чтобы сохранить csv автоматически hehe! – SIslam