[PYTHON] Pourquoi mon code ne fonctionne pas

Guilgo
2024-03-05 21:53:50

from lxml import html
import requests

url = 'https://www.atptour.com/en/players/roger-federer/f324/overview'

def html_parse_tree(url):
page = requests.get(url)
tree = html.fromstring(page.content)
return tree

player_name = html_parse_tree(url).xpath('//div[@class="player_name"]/span/text()')[0]

print("Nom du joueur :", player_name)

En gros je veux récupérer le nom du joueur de la page... J'essaye de me former mais je n'arrive à faire ce truc si simple

Guilgo
2024-03-05 21:54:49

j'en appelle aux devs de ce forum

Guilgo
2024-03-05 21:55:53

Pas d'erreur de code mais me renvoie du vide

Dodecaphonisme
2024-03-05 21:58:06

oui normal, si l'expression XPath ne corresponde pas à l'élément HTML contenant le nom du joueur sur la page, il ne t'affichera rien.

Dodecaphonisme
2024-03-05 21:59:10

fais inspecter l'élément sur la page, et rajoute une exception s'il ne trouve rien

1BaconStrip
2024-03-05 21:59:15

Demande à ChatGPT

Guilgo
2024-03-05 21:59:49

Le 05 mars 2024 à 21:59:10 :
fais inspecter l'élément sur la page, et rajoute une exception s'il ne trouve rien

Une exception ? c'est quoi?

1BaconStrip
2024-03-05 21:59:49

+ go utiliser beautiful soup

Lama_Facho_4
2024-03-05 21:59:52

C'est pas ton lien qui est mort ?

Guilgo
2024-03-05 22:00:33

Le 05 mars 2024 à 21:59:49 :
+ go utiliser beautiful soup

J'ai un script entier avec lxml :(

Guilgo
2024-03-05 22:01:02

Le 05 mars 2024 à 21:59:52 :
C'est pas ton lien qui est mort ?

Non il est bon enlève le guillemet à la fin

Tirie14_1
2024-03-05 22:01:03

Mixtral 8x7B

---

The issue with your code is that the XPath expression you are using to extract the player name is not correct. There is no element with class "player_name" in the HTML content of the page, which is why your html_parse_tree function returns an empty list for player_name.

To fix this issue, you can modify the XPath expression to correctly select the element containing the player name. In this case, the player name is contained within a span element with class "player-name__full".

Here's the corrected code:



from lxml import html
import requests

url = 'https://www.atptour.com/en/players/roger-federer/f324/overview'

def html_parse_tree(url):
page = requests.get(url)
tree = html.fromstring(page.content)
return tree

player_name = html_parse_tree(url).xpath('//span[@class="player-name__full"]/text()')[0]

print("Player Name :", player_name)

This should output the following:

Player Name : Roger Federer

---

Chat-GPT 4:

Votre script Python tente d'extraire le nom d'un joueur à partir de sa page de profil sur le site ATP Tour en utilisant la bibliothèque lxml pour analyser le HTML. Il semble y avoir plusieurs problèmes potentiels avec le code tel qu'il est fourni. Je vais aborder les corrections étape par étape.

Indentation incorrecte: Python est très strict sur l'indentation puisqu'elle définit la structure du bloc de code. Votre fonction html_parse_tree n'est pas correctement indentée.

Sélecteur XPath incorrect: Le sélecteur XPath que vous utilisez pour extraire le nom du joueur semble incorrect. Les sélecteurs doivent correspondre exactement à la structure du HTML de la page ciblée. Il est très probable que la structure de la page ait changé ou que le sélecteur ait été mal identifié dès le début.

Je vais corriger l'indentation et ajuster le code pour utiliser un sélecteur XPath plus générique, mais notez que sans accès direct au site et sans connaître sa structure actuelle, le sélecteur exact pourrait nécessiter un ajustement.



from lxml import html
import requests

url = 'https://www.atptour.com/en/players/roger-federer/f324/overview'

def html_parse_tree(url):
page = requests.get(url)
tree = html.fromstring(page.content)
return tree

# Cette ligne utilise un sélecteur hypothétique. Vous devrez peut-être ajuster le sélecteur XPath en fonction de la structure actuelle de la page.
player_name = html_parse_tree(url).xpath('//div[contains(@class, "player-profile")]/h1/text()')

# Vérifier si player_name contient un résultat avant d'essayer d'accéder au premier élément
if player_name:
print("Nom du joueur :", player_name[0])
else:
print("Nom du joueur introuvable")

Dans ce code, j'ai supposé un sélecteur XPath générique basé sur une structure hypothétique de la page. Vous devrez peut-être inspecter la page web pour trouver le bon sélecteur. Utilisez les outils de développement de votre navigateur (généralement accessibles via F12 ou clic droit -> Inspecter) pour voir la structure HTML de la page et ajuster le sélecteur XPath en conséquence.

Si vous avez accès à la page et que vous pouvez vérifier la structure HTML, vous devriez ajuster la partie .xpath('//div[contains(@class, "player-profile")]/h1/text()') avec le sélecteur correct qui correspond au nom du joueur dans le HTML.

gr6jdgh5FG6R
2024-03-05 22:01:35

rajoute un print(page.status_code) pour voir si t'as autre chose que du 200

DarkSylux
2024-03-05 22:02:31

print("Hello world")
https://image.noelshack.com/fichiers/2018/29/6/1532128784-risitas33.png

Guilgo
2024-03-05 22:02:52

Le 05 mars 2024 à 22:01:03 :
Mixtral 8x7B

---

The issue with your code is that the XPath expression you are using to extract the player name is not correct. There is no element with class "player_name" in the HTML content of the page, which is why your html_parse_tree function returns an empty list for player_name.

To fix this issue, you can modify the XPath expression to correctly select the element containing the player name. In this case, the player name is contained within a span element with class "player-name__full".

Here's the corrected code:



from lxml import html
import requests

url = 'https://www.atptour.com/en/players/roger-federer/f324/overview'

def html_parse_tree(url):
page = requests.get(url)
tree = html.fromstring(page.content)
return tree

player_name = html_parse_tree(url).xpath('//span[@class="player-name__full"]/text()')[0]

print("Player Name :", player_name)

This should output the following:

Player Name : Roger Federer

---

Chat-GPT 4:

Votre script Python tente d'extraire le nom d'un joueur à partir de sa page de profil sur le site ATP Tour en utilisant la bibliothèque lxml pour analyser le HTML. Il semble y avoir plusieurs problèmes potentiels avec le code tel qu'il est fourni. Je vais aborder les corrections étape par étape.

Indentation incorrecte: Python est très strict sur l'indentation puisqu'elle définit la structure du bloc de code. Votre fonction html_parse_tree n'est pas correctement indentée.

Sélecteur XPath incorrect: Le sélecteur XPath que vous utilisez pour extraire le nom du joueur semble incorrect. Les sélecteurs doivent correspondre exactement à la structure du HTML de la page ciblée. Il est très probable que la structure de la page ait changé ou que le sélecteur ait été mal identifié dès le début.

Je vais corriger l'indentation et ajuster le code pour utiliser un sélecteur XPath plus générique, mais notez que sans accès direct au site et sans connaître sa structure actuelle, le sélecteur exact pourrait nécessiter un ajustement.



from lxml import html
import requests

url = 'https://www.atptour.com/en/players/roger-federer/f324/overview'

def html_parse_tree(url):
page = requests.get(url)
tree = html.fromstring(page.content)
return tree

# Cette ligne utilise un sélecteur hypothétique. Vous devrez peut-être ajuster le sélecteur XPath en fonction de la structure actuelle de la page.
player_name = html_parse_tree(url).xpath('//div[contains(@class, "player-profile")]/h1/text()')

# Vérifier si player_name contient un résultat avant d'essayer d'accéder au premier élément
if player_name:
print("Nom du joueur :", player_name[0])
else:
print("Nom du joueur introuvable")

Dans ce code, j'ai supposé un sélecteur XPath générique basé sur une structure hypothétique de la page. Vous devrez peut-être inspecter la page web pour trouver le bon sélecteur. Utilisez les outils de développement de votre navigateur (généralement accessibles via F12 ou clic droit -> Inspecter) pour voir la structure HTML de la page et ajuster le sélecteur XPath en conséquence.

Si vous avez accès à la page et que vous pouvez vérifier la structure HTML, vous devriez ajuster la partie .xpath('//div[contains(@class, "player-profile")]/h1/text()') avec le sélecteur correct qui correspond au nom du joueur dans le HTML.

les deux codes me renvoie une erreur, index [0] n'existe pas, car la liste est vide ...

gr6jdgh5FG6R
2024-03-05 22:03:03

Le 05 mars 2024 à 22:00:33 :

Le 05 mars 2024 à 21:59:49 :
+ go utiliser beautiful soup

J'ai un script entier avec lxml :(

tu fais bien d'utiliser lxml, c'est bien plus rapide que bs4 (même si dans ton cas la vitesse n'est pas critique)

Tirie14_1
2024-03-05 22:03:51

Le 05 mars 2024 à 22:02:52 Guilgo a écrit :

Le 05 mars 2024 à 22:01:03 :
Mixtral 8x7B

---

The issue with your code is that the XPath expression you are using to extract the player name is not correct. There is no element with class "player_name" in the HTML content of the page, which is why your html_parse_tree function returns an empty list for player_name.

To fix this issue, you can modify the XPath expression to correctly select the element containing the player name. In this case, the player name is contained within a span element with class "player-name__full".

Here's the corrected code:



from lxml import html
import requests

url = 'https://www.atptour.com/en/players/roger-federer/f324/overview'

def html_parse_tree(url):
page = requests.get(url)
tree = html.fromstring(page.content)
return tree

player_name = html_parse_tree(url).xpath('//span[@class="player-name__full"]/text()')[0]

print("Player Name :", player_name)

This should output the following:

Player Name : Roger Federer

---

Chat-GPT 4:

Votre script Python tente d'extraire le nom d'un joueur à partir de sa page de profil sur le site ATP Tour en utilisant la bibliothèque lxml pour analyser le HTML. Il semble y avoir plusieurs problèmes potentiels avec le code tel qu'il est fourni. Je vais aborder les corrections étape par étape.

Indentation incorrecte: Python est très strict sur l'indentation puisqu'elle définit la structure du bloc de code. Votre fonction html_parse_tree n'est pas correctement indentée.

Sélecteur XPath incorrect: Le sélecteur XPath que vous utilisez pour extraire le nom du joueur semble incorrect. Les sélecteurs doivent correspondre exactement à la structure du HTML de la page ciblée. Il est très probable que la structure de la page ait changé ou que le sélecteur ait été mal identifié dès le début.

Je vais corriger l'indentation et ajuster le code pour utiliser un sélecteur XPath plus générique, mais notez que sans accès direct au site et sans connaître sa structure actuelle, le sélecteur exact pourrait nécessiter un ajustement.



from lxml import html
import requests

url = 'https://www.atptour.com/en/players/roger-federer/f324/overview'

def html_parse_tree(url):
page = requests.get(url)
tree = html.fromstring(page.content)
return tree

# Cette ligne utilise un sélecteur hypothétique. Vous devrez peut-être ajuster le sélecteur XPath en fonction de la structure actuelle de la page.
player_name = html_parse_tree(url).xpath('//div[contains(@class, "player-profile")]/h1/text()')

# Vérifier si player_name contient un résultat avant d'essayer d'accéder au premier élément
if player_name:
print("Nom du joueur :", player_name[0])
else:
print("Nom du joueur introuvable")

Dans ce code, j'ai supposé un sélecteur XPath générique basé sur une structure hypothétique de la page. Vous devrez peut-être inspecter la page web pour trouver le bon sélecteur. Utilisez les outils de développement de votre navigateur (généralement accessibles via F12 ou clic droit -> Inspecter) pour voir la structure HTML de la page et ajuster le sélecteur XPath en conséquence.

Si vous avez accès à la page et que vous pouvez vérifier la structure HTML, vous devriez ajuster la partie .xpath('//div[contains(@class, "player-profile")]/h1/text()') avec le sélecteur correct qui correspond au nom du joueur dans le HTML.

les deux codes me renvoie une erreur, index [0] n'existe pas, car la liste est vide ...

Après, je n'y connais rien en Pythonhttps://image.noelshack.com/fichiers/2016/30/1469541952-risitas182.png

Guilgo
2024-03-05 22:04:08

Le 05 mars 2024 à 22:01:35 :
rajoute un print(page.status_code) pour voir si t'as autre chose que du 200

403

DarkSylux
2024-03-05 22:04:15

Le 05 mars 2024 à 22:03:51 Tirie14_1 a écrit :

Le 05 mars 2024 à 22:02:52 Guilgo a écrit :

Le 05 mars 2024 à 22:01:03 :
Mixtral 8x7B

---

The issue with your code is that the XPath expression you are using to extract the player name is not correct. There is no element with class "player_name" in the HTML content of the page, which is why your html_parse_tree function returns an empty list for player_name.

To fix this issue, you can modify the XPath expression to correctly select the element containing the player name. In this case, the player name is contained within a span element with class "player-name__full".

Here's the corrected code:



from lxml import html
import requests

url = 'https://www.atptour.com/en/players/roger-federer/f324/overview'

def html_parse_tree(url):
page = requests.get(url)
tree = html.fromstring(page.content)
return tree

player_name = html_parse_tree(url).xpath('//span[@class="player-name__full"]/text()')[0]

print("Player Name :", player_name)

This should output the following:

Player Name : Roger Federer

---

Chat-GPT 4:

Votre script Python tente d'extraire le nom d'un joueur à partir de sa page de profil sur le site ATP Tour en utilisant la bibliothèque lxml pour analyser le HTML. Il semble y avoir plusieurs problèmes potentiels avec le code tel qu'il est fourni. Je vais aborder les corrections étape par étape.

Indentation incorrecte: Python est très strict sur l'indentation puisqu'elle définit la structure du bloc de code. Votre fonction html_parse_tree n'est pas correctement indentée.

Sélecteur XPath incorrect: Le sélecteur XPath que vous utilisez pour extraire le nom du joueur semble incorrect. Les sélecteurs doivent correspondre exactement à la structure du HTML de la page ciblée. Il est très probable que la structure de la page ait changé ou que le sélecteur ait été mal identifié dès le début.

Je vais corriger l'indentation et ajuster le code pour utiliser un sélecteur XPath plus générique, mais notez que sans accès direct au site et sans connaître sa structure actuelle, le sélecteur exact pourrait nécessiter un ajustement.



from lxml import html
import requests

url = 'https://www.atptour.com/en/players/roger-federer/f324/overview'

def html_parse_tree(url):
page = requests.get(url)
tree = html.fromstring(page.content)
return tree

# Cette ligne utilise un sélecteur hypothétique. Vous devrez peut-être ajuster le sélecteur XPath en fonction de la structure actuelle de la page.
player_name = html_parse_tree(url).xpath('//div[contains(@class, "player-profile")]/h1/text()')

# Vérifier si player_name contient un résultat avant d'essayer d'accéder au premier élément
if player_name:
print("Nom du joueur :", player_name[0])
else:
print("Nom du joueur introuvable")

Dans ce code, j'ai supposé un sélecteur XPath générique basé sur une structure hypothétique de la page. Vous devrez peut-être inspecter la page web pour trouver le bon sélecteur. Utilisez les outils de développement de votre navigateur (généralement accessibles via F12 ou clic droit -> Inspecter) pour voir la structure HTML de la page et ajuster le sélecteur XPath en conséquence.

Si vous avez accès à la page et que vous pouvez vérifier la structure HTML, vous devriez ajuster la partie .xpath('//div[contains(@class, "player-profile")]/h1/text()') avec le sélecteur correct qui correspond au nom du joueur dans le HTML.

les deux codes me renvoie une erreur, index [0] n'existe pas, car la liste est vide ...

Après, je n'y connais rien en Pythonhttps://image.noelshack.com/fichiers/2016/30/1469541952-risitas182.png

Et en cobra ?https://image.noelshack.com/fichiers/2018/29/6/1532128784-risitas33.png

gr6jdgh5FG6R
2024-03-05 22:04:34

Le 05 mars 2024 à 22:04:08 :

Le 05 mars 2024 à 22:01:35 :
rajoute un print(page.status_code) pour voir si t'as autre chose que du 200

403

tu dois rajouter des headers

Infos
Gestion du forum

contact@geevey.com

API disponible. Utilisez le paramètre "api" en GET, peu importe le contenu, sur une page du site.

Notes

    ⚠️ Les archives de novembre sont désormais disponibles.
Non-assumage
    Personne n'a pas assumé de topic pour le moment.