Contexte :
Utilisez la sélection de bs4 sous Python3 pour obtenir le nom du magasin dans les informations du coupon en haut de la page d'accueil de ZOZO. (L'adresse IP nationale semble incapable de voir les informations du coupon. Vous devez les faire défiler pour les voir. Il est préférable d'utiliser l'adresse IP d'un pays insulaire)
Question :
Je trouve que je ne trouve pas où est écrit le nom de son magasin. Je ne sais pas comment l'obtenir. Je ne comprends pas le js du front-end. Veuillez me donner une réponse. Merci.
Mon code est le suivant :
import requests, bs4
shopName = 'BEAUTY&YOUTH'
url = 'http://zozo.jp/'
def getZozoCoupon():
res = requests.get(url, headers={"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36"})
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text, 'html.parser')
elems = soup.select('.bnrName')
return elems[0].text.strip()
La capture d'écran ci-dessous est le texte que vous souhaitez obtenir,
J'ai constaté qu'il n'y avait pas de texte dans le code source.
<p class="couponInfo">
<p class="bnrName">说好的文字呢。。。</p>
<p class="bnrText"></p>
</p>
Veuillez me dire où son texte est implémenté et comment utiliser bs4 select pour l'afficher. Merci.
Il est possible d'utiliser ajax pour l'obtenir depuis le serveur puis d'utiliser le dom pour l'ajouter dynamiquement Lorsque js est exécuté dans le navigateur, le texte sera également ajouté. Lorsque vous avez exploré avec un robot d'exploration, vous n'avez pas exécuté les js pertinents, vous n'avez donc pas ajouté de texte.
Si tel est vraiment le cas, vous pouvez vérifier le réseau en f12 du navigateur, connaître l'URL de la requête http pour obtenir le texte, et demander directement cette URL pour obtenir les informations dont vous avez besoin.
J'ai ouvert http://zozo.jp/ dans le navigateur pour afficher le code source et je n'ai pas trouvé le bnrName que vous recherchiez
Cliquez avec le bouton droit sur le navigateur et « afficher le code source de la page Web » pour voir si vous pouvez trouver votre texte. Si vous ne le trouvez pas, la page Web doit être chargée dynamiquement à l'aide de js ou d'ajax. Si vous souhaitez l'explorer. sorte de page dynamique, vous devez Il n'y a pas d'autre moyen, soit de simuler manuellement la requête vous-même, soit d'utiliser du sélénium pour l'attraper
Il est en effet généré par js. Il a été simulé et capturé à l'aide d'un navigateur sans tête Merci à tous !