La raison pour laquelle vous n'avez rien obtenu de cette URL spécifique est simplement parce que, l'information dont vous avez besoin n'est pas là. Alors, laissez-moi d'abord expliquer un peu comment cette page est chargée dans un navigateur: lorsque vous demandez cette page (http://www.hm.com/sg/products/ladies), le contenu littéral sera retourné dans la première phase (ce qui est ce que vous avez obtenu de votre requête urllib2), puis le navigateur commence à lire/analyser le contenu, il indique au navigateur où trouver toutes les informations dont il a besoin pour afficher toute la page (par exemple CSS pour contrôler la mise en page, javascript/urls/pages etc), et le navigateur fait tout cela derrière la scène. Lorsque vous "inspectez élément" en chrome, la page est déjà entièrement chargée, et ces informations ne sont pas dans l'URL d'origine, vous devez donc savoir quelle URL est utilisée pour remplir ces zones et aller à la place de cette URL spécifique. Maintenant, nous avons besoin de savoir ce qui se passe derrière la scène, et un outil est nécessaire pour capturer tout le trafic lorsque cette page se charge (je recommande fiddler).
Comme vous pouvez le voir, beaucoup de choses se passent lorsque vous ouvrez cette page dans un navigateur! (Et c'est seulement une partie de l'ensemble du processus de chargement de la page) Ainsi par supposition, les informations dont vous avez besoin si être dans l'une de ces trois demandes "api.hm.com", et la meilleure partie est qu'ils sont déjà formatés JSON, ce qui signifie que vous ne pourriez même pas embêter avec BeautifulSoup, le module intégré json
pourrait faire le travail!
OK, maintenant quoi? Utilisez urllib2
pour simuler ces demandes et obtenir ce que vous voulez.
P.S. requests
est un excellent outil pour ce genre de travail, vous pouvez l'obtenir here.
Pouvez-vous envoyer l'URL que vous essayez de gratter pour vérifier si elle utilise javascript – Wonka