我一直在做一些PHP的拼湊,並在特定的域上得到一些奇怪的結果。例如,當我下載此頁:導致不完整頁面由PHP的file_get_contents()返回的URL結構
http://pitchfork.com/reviews/tracks/
它工作正常。但是,如果我嘗試下載此頁:
http://pitchfork.com/reviews/tracks/1/
它返回一個不完整的頁面,即使內容是完全一樣的。隨後的所有頁面(曲目/ 2 /,曲目/ 3 /等)也會返回不完整的數據。
這似乎是分頁期間URL形成的問題。網站上的大多數其他部分都顯示相同的行爲(着陸頁起作用,但不包括後續頁面)。一個例外是本節:
http://pitchfork.com/forkcast/
凡forkcast/2 /等做工精細。這可能是由於它只有一個目錄深,其中大部分其他部分都是多個目錄。
我似乎已經掌握了什麼是導致問題的原因,但不是爲什麼或如何解決問題。
任何想法?
我已經嘗試使用file_get_contents()和cURL,並且都給出了相同的結果。
有趣的是,在所有不起作用的頁面上,不完整的頁面大約有16,000個字符長。這是一個線索嗎?
我創建了一個測試頁面,在這裏你可以看到其中的差別:
http://fingerfy.com/test.php?url=http://pitchfork.com/reviews/tracks/
http://fingerfy.com/test.php?url=http://pitchfork.com/reviews/tracks/1/
它輸出的strlen()和下載網頁的內容(加上它使相對URL進入絕對的,所以CSS是正確的)。
任何提示都會很棒!
UPDATE:Mowser,這爲移動優化的頁面與這些頁面沒有問題(http://mowser.com/web/pitchfork.com/reviews/tracks/2/),所以必須有一個辦法做到這一點沒有它失敗....
一個快速觀察 - 似乎網頁的公平位是使用Javascript動態創建的(函數如'GA_googleFillSlot(「Strip_Reviews」);'在源代碼中提及)。只是不確定這樣加載時是否仍然可以可靠運行。值得測試的是將' '插入頭部。 –
2010-08-16 02:41:51
感謝Lucanos,但問題更深入。當你抓取頁面時,它只抓取第一個16kb。剩下的部分丟失了,包括頁腳和關閉body/html標籤等等。頁面服務點出了問題...... – 2010-08-16 10:14:32