URL结构导致PHP的文件_get_contents()返回不完整的页面

URL结构导致PHP的文件_get_contents()返回不完整的页面,php,mod-rewrite,screen-scraping,Php,Mod Rewrite,Screen Scraping,我一直在用PHP做一些刮削,在一个特定的域上得到一些奇怪的结果。例如,当我下载此页面时: 它很好用。但是,如果我尝试下载此页面: 它返回一个不完整的页面,即使内容完全相同。所有后续页面tracks/2/、tracks/3/等也返回不完整的数据 在分页过程中,URL的形成方式似乎有问题。网站上的大多数其他部分都表现出与登录页相同的行为,但没有后续页面。一个例外是本节: forkcast/2/etc工作正常。这可能是因为它只有一个目录深度,而大多数其他部分都有多个目录深度 我似乎掌握了问题的起因,但

我一直在用PHP做一些刮削,在一个特定的域上得到一些奇怪的结果。例如,当我下载此页面时:

它很好用。但是,如果我尝试下载此页面:

它返回一个不完整的页面,即使内容完全相同。所有后续页面tracks/2/、tracks/3/等也返回不完整的数据

在分页过程中,URL的形成方式似乎有问题。网站上的大多数其他部分都表现出与登录页相同的行为,但没有后续页面。一个例外是本节:

forkcast/2/etc工作正常。这可能是因为它只有一个目录深度,而大多数其他部分都有多个目录深度

我似乎掌握了问题的起因,但不知道为什么或如何解决

有什么想法吗

我尝试过使用file\u get\u contents和cURL,两者都给出了相同的结果

有趣的是,在所有不工作的页面上,不完整的页面大约有16000个字符长。这是线索吗

我创建了一个测试页面,您可以在其中看到差异:

它打印下载页面的strlen和内容,并将相对URL转换为绝对URL,因此CSS是正确的

任何提示都很好


更新:Mowser,它为移动设备优化页面,对这些页面没有任何问题,因此必须有一种方法可以做到这一点,而不会失败….

看起来pitchfork正在运行一个带有人类URL的CMS。这意味着/review/tracks会显示一个包含多个帖子的主页,但是/reviews/tracks/1只会显示review 1。有可能他们已经将CMS配置为只输出固定长度的摘录,或者错误地配置了输出过滤器,并提前切掉了各个帖子页面


<>我尝试使用WGET获取/跟踪/ 1到/跟踪/ 6,它们都有不同的内容,它们精确地终止在16097个字节,通常在标签的中间。因此,这不太可能是你能解决的问题,因为这是网站本身发送的坏数据。

快速观察-似乎有相当一部分页面是使用Javascript函数动态创建的,比如GA_googleFillSlotStrip_Reviews;资料来源中提到了。只是不确定以这种方式加载时是否仍能可靠地运行。值得一试的是将其插入头部。谢谢卢卡诺斯,但问题更深。获取页面时,它只获取前16kb。剩下的部分丢失了,包括页脚和结束体/html标记等。在提供页面的地方出现了一些问题……是的,肯定与“人类”URL有关。然而,有一些奇怪的事情正在发生:a评论主页和第1页应该返回与浏览器中完全相同的数据,但是一个有效,另一个无效b与所有其他部分不同,forkcast部分工作得非常好,包括后续的页面c,不完整的页面总是16kb,这对我来说意味着它是以16kb刷新输出,而不是输出整个页面。我仍然有希望,因为当在浏览器中查看时,这些页面可以很好地获取。。