[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопрос по парсингу данных с сайта
major28
Здравствуйте! Я хочу парсить данные со страниц с некого ресурса. каждые 5 минут у меня скрипт будет запускать функции file_get_contents("различные страницы данного сайта") в количестве 1000 - 5000 раз. Звучит как то ужасно понимаю)) Вопрос в следующем: будет ли вообще работать мой скрипт и не спалит ли меня сайт что я ворую у них контент если средняя посещаемость в сутки пол миллиона? Может предложите более рациональный вариант для взаимствования данных с большого количества страниц каждые, например, 5 минут??? ))))

p.s. нет, я не псих))))



Спустя 17 минут, 5 секунд (28.06.2011 - 17:41) bulgakov написал(а):
Немного не понял, ты хочеш парсить 1000-5000 страниц? Все скопом сразу или последовательно? И главный вопрос... НАФИГА?

Спустя 58 секунд (28.06.2011 - 17:42) bulgakov написал(а):
И на каком серваке ты будеш это делать?

Спустя 42 секунды (28.06.2011 - 17:43) Oyeme написал(а):
При посещении миллиона.Тебя мало вероятно заметят.

Что они могут сделать так:
По логома определят что кто-то заходит через 5 мин.(Думают что это может быть..)
Вкрайнем случаи это бан на ИП.

Спустя 44 секунды (28.06.2011 - 17:44) bulgakov написал(а):
Попробуй напиши скрипт хотя бы для 100 страниц и посмотри как это "быстро" работает, и хватит ли тебе интервала в 5 минут для этой задачи.

Спустя 12 минут, 34 секунды (28.06.2011 - 17:56) major28 написал(а):
у меня примерно вот такой скрипт

$a=array(массив из урлов на страницы текущего сайта, 5000 элементов)


for($i=0;$i<count($a);$i++){
$result = file_get_contents($a[$i]);
затем форматирую $result и вывожу в нужном виде
}

Спустя 2 часа, 57 минут, 18 секунд (28.06.2011 - 20:54) walerus написал(а):
Забанят IP это факт, процентов 70, НО, можно повесить на курл прокси, это раз, подменивать броузер, это два ( мало ли человек сидит в интернет кафе, у которого 1н IP адрес, хотя такое, маловероятно, но все же smile.gif ). Теперь по задержке в 5ть минут, она осуществляться будет чем ?, кроном ? или sleep/usleep ?, если sleep, то это есть ни найс решение..., т.к. процесс будет висеть постоянно в памяти, лучше и бодее гибко, использовать крон + курл + (прокси?) или же если скрипт на сервере - то по идее должен быть не 1н IP адрес... можно их использовать...

ИМХО - for - уже старо, foreach веселее.

Спустя 14 минут (28.06.2011 - 21:08) bulgakov написал(а):
Ну не то чтобы старо, просто для массивов действительно больше подходит foreach()

Спустя 13 минут, 3 секунды (28.06.2011 - 21:21) major28 написал(а):
да не суть в синтаксисе кода) это понятно что foreach лучше подходит) а скрипт будет дергаться кроном. Кто нибудь владеет навыками при помощи которых можно подчитать нагрузку на сервер и прочие параметры от которых будет зависит работа скрипта?

Спустя 8 минут, 37 секунд (28.06.2011 - 21:29) walerus написал(а):
а по ssh посмотреть "top" ?, и выяснить грузит ли сервер... При чем, за чей сервер переживаешь? за свой или за того, у которого парсишь )))
У меня стоит 20+ парсеров, и сервер не напрягается ), ну если конечно я не кривыми пальцами с утра что то писал ))), т.е. чтоб ошибок не было и ничего не подвешивалось бы в цикл и тому подобное...

Спустя 6 минут, 58 секунд (28.06.2011 - 21:36) major28 написал(а):
код у меня чиистый) просто мне полуается большой трафик нужно воровать с чужого сайта, вот и боюсь за чужой сервак) ну и за свой) Просто я в цикле долбанул как то 50 запросов к серверу и у меня в конце сервер вернул 503 ошибку) следовательно нужно ставить таймаут между запросами, вот опять же не знаю сколько по времени задержку поставить) если ставить 1 секунду, то это получается что у меня один скрипт будет работать до вечера)) Кстати созрел еще один вопрос, время выполнения скрипта 60 сек, как и на сколько максимум можно его увеличить?

Спустя 2 минуты, 55 секунд (28.06.2011 - 21:39) walerus написал(а):
Цитата
Просто я в цикле долбанул как то 50 запросов к серверу и у меня в конце сервер вернул 503 ошибку
- чей сервер вернул, твой или его ?

set_time_limit(0);- убирает какое либо ограничение по времени на выполнение скрипта

Спустя 1 минута, 7 секунд (28.06.2011 - 21:40) major28 написал(а):
странно это) и что получается если я запущу скрипт с бесконечным циклом и укажу set_time_limit(0); то он до конца смерти сервера будет работать?)

Спустя 37 секунд (28.06.2011 - 21:41) walerus написал(а):
Цитата
просто мне полуается большой трафик нужно воровать с чужого сайта

Ты и текст и картинки парсишь? или же только текст? если последнее, то там того трафика кот наплакал... ))

Спустя 1 минута, 12 секунд (28.06.2011 - 21:42) walerus написал(а):
Цитата (major28 @ 28.06.2011 - 18:40)
странно это) и что получается если я запущу скрипт с бесконечным циклом и укажу set_time_limit(0); то он до конца смерти сервера будет работать?)

Да, именно, точнее пока ты не закроешь броузер, ну а если ты из консоли запустил, то пока не ребутнешь сервер...

Спустя 4 минуты, 44 секунды (28.06.2011 - 21:47) major28 написал(а):
только текст))) принцип парсинга такой
я с помощью file_get_contents в цикле обращаюсь к страницам, их 500 штук, после каждого обращения к странице я на этой странице ищу ссылку, затем опять по этой ссылке обращаюсь с помощью file_get_contents, затем на этой странице дергаю около 20 ссылок опять же с file get_contents и уже на этих полученных 20 страницах я забираю нужную инфу для своих нужд)))

Спустя 1 минута, 10 секунд (28.06.2011 - 21:48) major28 написал(а):
Цитата
Да, именно, точнее пока ты не закроешь броузер, ну а если ты из консоли запустил, то пока не ребутнешь сервер...

а если я например на хостинге мастерхоста запущу по крону ?)

Спустя 7 минут, 16 секунд (28.06.2011 - 21:55) walerus написал(а):
1) берем страницу одну из 500
2) находим на ней ссылку
3) переходим по ней
4) ищем еще ~ 20 ссылок
5) собираем контент с этих 20ти страниц

и так до использования всех 500 страниц? все верно? - не вижу трудностей, я сграбил 9к+ страниц, за вечер, с текстом и картинками... никто ничего не заблочил, тут нужно конкретно пробовать, если нужно могу затестить.

Спустя 1 минута, 1 секунда (28.06.2011 - 21:56) walerus написал(а):
за мастерхоста незнаю спроси у саппорта biggrin.gif , запусти с локали, что мешает?

Спустя 26 секунд (28.06.2011 - 21:57) major28 написал(а):
да, так) но так каждые минут 5-10))) на кроне) с технической точки зрения это реально?)))

Спустя 5 минут, 9 секунд (28.06.2011 - 22:02) walerus написал(а):
Конечно реально, можно тупо парсить по 100 страниц за раз, и складывать результ в файлег, что отработанно столько то, мало ли, инет оторвало или еще что, а по следующему старту крона, считать количество выполненной работы, и стартовать уже с ласт позиции

Спустя 3 минуты, 16 секунд (28.06.2011 - 22:05) major28 написал(а):
круто) допилю скрипт и на выходных попробую протестить))) спасибо за советы)))

Спустя 3 минуты, 51 секунда (28.06.2011 - 22:09) walerus написал(а):
Та вэлкам ), если че стукай ), распарсим все и вся ))

Спустя 17 секунд (28.06.2011 - 22:09) major28 написал(а):
оке)

Спустя 2 дня, 20 часов, 18 минут, 40 секунд (1.07.2011 - 18:28) Вадим написал(а):
Цитата (walerus @ 28.06.2011 - 19:02)
... я сграбил 9к+ страниц, за вечер, с текстом и картинками... никто ничего не заблочил ...

у меня похожая проблема.
грабить нужно не так много и не каждые 5 минут, как у топикстартера

и проблема вот с чем:

на каждой странице нужного мне сайта используется код:
<div style="visibility:hidden; display:none;"><a href="fileadmin/template/scripts/flooders.php">for flooders</a></div>

сайт работает на движке TYPO3/
файл flooders.php защищает от такого бессовестного граббинга, который нам интересен.

причём в ответ на мою попытку стащить сразу 100 страниц
я получил сетевую атаку от того сайта, который хотел "грабнуть".
(у нас в офисе 4 компа в сети работают от одного ADSL-модема, так все они повисли, пока я модем с кнопки не перезагрузил)

забросали они наш IP пакетами или как ещё - этого я не знаю, но
при этом антивири с файрволами не ругались :-(

securelist пока не разобрался с этой атакой, хотя и зафиксировал её.
вот ссылки:
http://www.securelist.com/ru/descriptions/...der.PHP.Blast.a
http://www.securelist.com/ru/descriptions/...HP.PhishMaker.c

вот здесь вроде бы безобидный код flooders.php:
http://php.su/articles/?cat=security&page=011

выходит, что мой IP не только в их ban.txt попал, а подключился ещё какой-то скрипт с командой атаки.

а тащить инфу надо регулярно.

как быть?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.