Apostrophes dans requête .find

Résolu
jpmaton Messages postés 67 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 26 septembre 2023 - 14 mars 2022 à 11:18
Whismeril Messages postés 18967 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 5 mars 2024 - 15 mars 2022 à 10:57
Bonjour,

Je super-débute en Python.
Je récupère le résumé d'un livre (sur Babelio.com) mais les apostrophes n'apparaissent pas dans mon texte.
Je voudrais bien sûr y remédier.
Grand merci pour l'aide
JPM

import requests
from bs4 import BeautifulSoup 

url = "https://www.babelio.com/livres/Levenseller-La-reine-des-ombres/1386403"
page = requests.get(url)
soup = BeautifulSoup(page.content, 'html.parser')

results = soup.find(id="d_bio") 
print (results.text)

JPM

5 réponses

Whismeril Messages postés 18967 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 5 mars 2024 649
14 mars 2022 à 19:24
Bonjour

le problème ne vient de ton code mais du site internet.
Si tu regardes le code source de la page, les « apostrophes » sont marquées \x92 qui n’est pas l’apostrophe mais selon l’encodage soit une simple cote soit un caractère invisible.

Je ne code pas en Python, donc j’ai bidouillé 2 ou 3 trucs pour essayer de compenser l’erreur du site mais pour l’instant c’est pas probant.
1
Whismeril Messages postés 18967 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 5 mars 2024 649
14 mars 2022 à 19:59
J'ai trouvé ceci qui fonctionne, mais je pense qu'il doit y avoir mieux
import requests
from bs4 import BeautifulSoup 

url = "https://www.babelio.com/livres/Levenseller-La-reine-des-ombres/1386403"
page = requests.get(url)


lesBytes = []
for byte in page.content:
    if byte == 146 :
        byte = 39
    lesBytes.append(byte)

soup = BeautifulSoup(bytes(lesBytes), 'html.parser')


results = soup.find(id="d_bio") 

print (results.text)

1
Merci Whismeril pour l'info.
Sur cette base j'ai trouvé :

import requests
from bs4 import BeautifulSoup 

url = "https://www.babelio.com/livres/Levenseller-La-reine-des-ombres/1386403"
page = requests.get(url)
soup = BeautifulSoup(page.content, 'html.parser')

results = soup.find(id="d_bio") 

print (result.text.replace("\x92","'")
0
Sorry, je corrige (il manque "s" !!!) :
print (results.text.replace("\x92","'")
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Whismeril Messages postés 18967 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 5 mars 2024 649
15 mars 2022 à 10:57
Ha tiens, j’avais essayé ça avec un résultat pas probant….

Cela dit, je pense que dans l’encodage ou le décodage du texte, il doit y avoir une « vraie » solution, mais ce que j’ai essayé n’a pas fonctionné
0
Rejoignez-nous