Я хотел написать функцию для захвата всех твитов для указанного пользователя, но он возвращает только 20 последних.
Я придумал что-то вроде этого:
function getTweets($user) { $page = file_get_contents("http://twitter.com/{$user}"); $from = strpos($page, "<ol id='timeline' class='statuses'>"); $to = strpos($page, "</ol>"); $length = $to - $from; $page =substr($page, $from, $length); echo $page; } getTweets('user_name');
Есть ли способ обойти это?
У Twitter есть API, который вы должны запрашивать для получения данных, таких как твиты. Это намного эффективнее, чем сканирование HTML.
Служба статусов / user_timeline API возвращает список твитов от любого незащищенного пользователя. Вот пример этой службы, настроенный на получение твитов для пользователя FRKT_ (это я). Вы можете настроить данные, которые он возвращает, разными способами, например, добавив переменную count
в URL-адрес, чтобы указать количество твитов, которые вы хотите получить.
Вы должны использовать XML-синтаксический анализатор, такой как SimpleXML
а не разные строковые функции, такие как strpos
как вы продемонстрировали, для анализа данных, возвращаемых API.
Библиотеки Twitter имеют библиотеки lib для php. Если вы можете захватить одного пользователя во всех твитах или нет, я боюсь, что не знаю, но библиотеки должны быть хорошей отправной точкой.
Они возвращают максимум 3200 твитов для каждого пользователя, вызывая статус GET / user_timeline , для получения дополнительной информации смотрите здесь: https://dev.twitter.com/discussions/1157