В Facebook подавляющее большинство содержимого страницы генерируется динамически — множественные вызовы Ajax и так далее. Это делает его очень, очень трудным для очистки. И, конечно же, для любой страницы, которая генерируется динамически, «дата создания» — это действительно дата, когда вы запрашиваете страницу каждый раз.
В контексте веб-страниц я не знаю очевидного способа получить дату создания, но дата модификации включена как необязательная часть спецификации HTTP 1.1. Таким образом, многие (но не все) веб-сайты будут отправлять заголовок Last-Modified вместе с веб-страницей. Этот заголовок можно изменить программно, и он совершенно бессмысленен на динамических веб-страницах, поэтому я бы не стал на него полагаться.
Вам не повезло с Facebook в любом случае. Нет заголовка Last-Modified (я проверял, в том числе после перенаправления этой конкретной страницы). И я не уверен, что еще вы могли бы искать на этой странице, чтобы найти дату создания.
Что касается других операций Goutte на этой странице и с учетом того, что я сказал о создании динамической страницы, вы все равно можете получить некоторое содержимое. Просто следите за перенаправлениями. Используя cURL в командной строке, вы можете увидеть, что веб-страница перенаправляется с https://www.facebook.com/151116474914629 на https://www.facebook.com/PhilzCoffeeCastro:
me@here:~$ curl --head https://www.facebook.com/151116474914629
HTTP/1.1 301 Moved Permanently
Location: https://www.facebook.com/PhilzCoffeeCastro
[snip]
Date: Tue, 16 Sep 2014 12:54:01 GMT
Connection: keep-alive
Content-Length: 0
Примечание «Перемещено навсегда».
Поэтому вам нужно проверить перенаправление и убедиться, что вы очищаете правильную страницу.
В итоге:
- Не используйте Goutte, чтобы найти время последнего изменения. Вам нужно разобрать заголовки HTTP, поэтому cURL — лучший выбор.
- Динамические страницы не имеют значимой «даты создания», и в любом случае их очень сложно очистить.
- Всегда проверяйте редиректы страниц
Если вы хотите найти дату, когда страница впервые появилась в Интернете, я бы посоветовал попробовать совершенно другую стратегию: http://www.labnol.org/internet/search/find-publishing-date-веб-страниц/8410/
Отказ от ответственности: я не знаю, что такое «Graph API», поэтому я допускаю, что не могу полностью понять контекст вашего вопроса. Я надеюсь, что что-то из вышеперечисленного будет полезным.
person
Rob Pomeroy
schedule
16.09.2014