2010-08-16 4 views
0

J'ai fait quelques scrap avec PHP et obtenu des résultats étranges sur un domaine particulier. Par exemple, quand je télécharger cette page:Structure de l'URL provoquant le renvoi de la page incomplète par le fichier file_get_contents de PHP()

http://pitchfork.com/reviews/tracks/

Il fonctionne très bien. Toutefois, si je tente de télécharger cette page:

http://pitchfork.com/reviews/tracks/1/

Il retourne une page incomplète, même si le contenu est exactement le même. Toutes les pages suivantes (pistes/2 /, pistes/3 /, etc.) renvoient également des données incomplètes.

Il semble y avoir un problème avec la façon dont les URL sont formées lors de la pagination. La plupart des autres sections sur le site présentent le même comportement (la page de destination fonctionne, mais pas les pages suivantes). Une exception est cette section:

http://pitchfork.com/forkcast/

Où forkcast/2/etc fin de travail. Cela peut être dû au fait qu'il ne s'agit que d'un seul répertoire, où la plupart des autres sections contiennent plusieurs répertoires.

Je semble avoir une idée de ce qui cause le problème, mais pas pourquoi ou comment il peut être réparé.

Des idées?

J'ai essayé d'utiliser file_get_contents() et cURL et les deux donnent le même résultat. Il est intéressant de noter que sur toutes les pages qui ne fonctionnent pas, la page incomplète a une longueur approximative de 16 000 caractères. Est-ce un indice?

J'ai créé une page de test où vous pouvez voir la différence:

http://fingerfy.com/test.php?url=http://pitchfork.com/reviews/tracks/

http://fingerfy.com/test.php?url=http://pitchfork.com/reviews/tracks/1/

Il imprime les strlen() et le contenu de la page téléchargée (plus il fait urls par rapport en absolu, de sorte que CSS est correct).

Tous les conseils seraient géniaux!

MISE À JOUR: Mowser, ce qui permet d'optimiser les pages pour mobile n'a aucun problème avec ces pages (http://mowser.com/web/pitchfork.com/reviews/tracks/2/) de sorte que le doit être un moyen de le faire sans que cela ne ....

+1

Une observation rapide - il semble qu'un peu juste de la page est créé dynamiquement en utilisant Javascript (des fonctions comme 'GA_googleFillSlot (" Strip_Reviews "),' sont mentionnés dans la source).Je ne sais pas si cela fonctionnerait encore de manière fiable une fois chargé de cette façon. Une chose qui vaut la peine d'être testée serait d'insérer '' dans la tête. –

+0

Merci Lucanos, mais le problème est plus profond. Lorsque vous récupérez la page, elle ne saisit que les 16 premiers Ko. Le reste est manquant, y compris le bas de page et les balises body/html de fermeture, etc. Quelque chose ne va pas au point où la page est servie .... –

Répondre

0

Il ressemble est comme un CMS en cours d'exécution pitchfork avec urls "humaines". Cela signifierait que/review/tracks afficherait une "page d'accueil" avec plusieurs affichages listés, mais "/ reviews/tracks/1" ne ferait apparaître que "review # 1". Il est possible qu'ils aient configuré le CMS pour qu'il ne produise qu'un extrait de longueur fixe ou que le filtre de sortie soit mal configuré et supprime rapidement les pages des messages individuels.

J'ai essayé d'aller chercher/tracks/1 à/tracks/6 en utilisant wget, et ils ont tous un contenu différent qui se termine à 16 097 octets exactement, généralement au milieu d'une étiquette. Donc, il est peu probable que ce soit quelque chose que vous pouvez corriger de votre côté, car c'est le site lui-même qui envoie de mauvaises données.

+0

Oui, définitivement quelque chose à voir avec les URL 'humaines'. Cependant, il y a quelques choses étranges qui se passent: a) la page d'accueil des avis et la page 1 devraient renvoyer les mêmes données (comme dans le navigateur), mais l'une fonctionne et l'autre ne fonctionne pas b) contrairement à tous les autres sections, la section forkcast (http://pitchfork.com/forkcast/) fonctionne parfaitement bien, y compris les pages suivantes c) les pages incomplètes sont toujours 16kb Cela me suggère qu'il chasse la sortie à 16ko, plutôt que de sortir toute la page. J'ai encore de l'espoir parce que les pages sont récupérées dans un navigateur. .. –

Questions connexes