Pour un projet de web scraping amusant, je souhaite collecter des données de la LNH à partir de ttps://www.nhl.com/stats/teams.
Il existe un onglet d'exportation Excel cliquable que je peux trouver en utilisant selenium
和 bs4
.
Malheureusement, ça se termine là :
Puisqu'il n'y a pas d'attribut href
, je n'arrive pas à accéder aux données.
J'ai obtenu ce que je veux en simulant un clic de souris avec pynput
mais je veux savoir :
Qu'aurais-je pu faire différemment ? Si cela semble gênant.
-> Les étiquettes avec les icônes d'exportation peuvent être trouvées ici :
a class="styles__ExportIcon-sc-16o6kz0-0 dIDMgQ"
-> Ceci est mon code
`import pynput from pynput.mouse import Button, Controller import time from bs4 import BeautifulSoup from selenium import webdriver driver = webdriver.Chrome(executable_path = 'somepath\chromedriver.exe') URL = 'https://www.nhl.com/stats/teams' driver.get(URL) html = driver.page_source # DOM with JavaScript execution complete soup = BeautifulSoup(html) body = soup.find('body') print(body.prettify()) mouse = Controller() time.sleep(5) # Sleep for 5 seconds until page is loaded mouse.position = (1204, 669) # thats where the icon is on my screen mouse.click(Button.left, 1) # executes download`
Non
href
属性,通过JS触发下载。使用selenium
时找到您的元素并使用.click()
Télécharger le fichier :Utilisez la classe commençant par
或者通过以
css 选择器
来获取直接子级的<a>
styles__ExportIcon
ici pour la sélectionner directement :Exemple
Vous devrez peut-être gérer la bannière onetrust, alors cliquez d'abord dessus puis téléchargez le formulaire.