.
6 мая 2008

Очень простой php парсер

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (6 оценок, среднее: 4.83 из 5)
posted in SEO, Полезности, Программирование |

Вор

Не в первый раз ко мне обращаются с вопросом как распарсить/сграбить то или сё.

Плагиат — дело конечно не доброе, но порой необходимое.

Для примера рассмотрим задачу воровства кейводров :)

По хорошему кеи добываются приблизительно так (если конечно не покупать готовую базу) — сначала грабим с какого нить подходящего ресурса (вордтрекер, увертюра и т.д. для англоязычных кеев) (директ, майл для русскоязычных) в глубь — это поисковые запросы с указанным кеем 2х, 3х словники и в ширь — это кеи синонимы или просто кеи, которые часто ищут вместе с исходым. Потом вся эта куча (либо только однословник) чекается на биды и возможно конкуренцию. Ненужное выкидываем, по остальному лепим доры.

Но можно пойти и другим путём — ищем дор, а лучше сетку доров. И распарсиваем уже готовые коммерческие кеи :) Как то делать было нечего — за день работы с разных сеток скоммуниздил 500 тыс уникальных русских кеев. Ру доры конечно же лучше искать в Раме :)

Ну и скриптик в студию:

<?php

//error_reporting(E_ALL); // врубал дя отладки

set_time_limit(0); // чтоб успело дограбить всё

ignore_user_abort(); // грабить не смотря на ошибки клиента

fp = fopen(«./keys.out»,"w+"); // складываем награбленное в keys.out

for($i=0;true;$i++) { //цикл для счётчика паг

$buf = file('http://xxxxxxx.ru/?p='.$i); // конкретный дор я решил не светить

preg_match(«!\<title\>(.*?)\<\/title>!ism»,$buf[3],$match); // кей в данном случае сидел только в тайтле, причем в анкорах внутренних линков кеев не было :)

$key = trim($match[1]," \r\n\t"); //режем переводы строк и прочую хуйню

echo $i." «.$key; flush(); //выводим на экран процесс грабинга (можно убрать), в принципе нужно только для начала — как только процесс пошел браузер можно закрывать

if (empty($key)) break; // условие останова (для этого конкретного дора)

fputs($fp,$key.»\n"); // пишем в файл выдранный кей

}
fclose($fp); // закрываем файл

?>

Скрипт я привел Очень простой — так сказать «5ти минутка» — ни обработки ошибок, ни через проки (на случай если не дают с одного айпишника грабить), ни многопоточный (если нужна максимальная скорость) даже пагу и ту через file дёргаю (по идее после получения кея дальше сокет можно закрывать). Чисто дёрнуть дор или ещё чего нибудь — для промышленного парсинга данный скрипт явно не подойдет. Вообще имхо, для промышленного, нужно на сях писать — и быстро и память не жрет и с многопоточностью всё в порядке (хотя в былые времена, когда шпамилок еще не продавали, мой скриптик-шпамила довольно шустро и на php работал).

Если интересно можно будет поднакрутить до многопоточности и работы через прокси :)

Ну и конечно не забываем, что приведенный скрипт не универсален — под каждую задачу затачиваем уже сами (формат страниц, выдирание нужного контента и т.д.)

P.S.

Кстати сегодня с новой офлайн работы первый раз на свой сервачек цеплялся — возникли каки то непонятные проблемы с пробросом фтп трафика — решил сильно не заморачиваться (разберусь как время будет) — поставил SFTPDrive — очень забавная софтина — в винду по ssh протоколу мапит виртуальный драйв с сервака — если не нужно расшаривать доступ нескольким юзерам (работаешь на серваке монопольно) то имхо — очень удобно! ФТП сервак на машинке вообще поднимать и настраивать не нужно !

И, на последок, пару рекламных ссылочек:

И для подтверждения авторства моего блога, секретный код: 2004163.53afaf17fa3bb99abb5f0a8b9a97fe6a.1210728395.d4c9e1895936ca00a60a1aedf7f8b9d1

Post to Twitter ReTweet

Похожие статьи

У нас куча комментариев (36) на запись “Очень простой php парсер”

Почему бы Вам не высказать своем мнение! Позвольте нам узнать, что Вы думаете...

  1. 1 On 06.05.2008, stwinnie said:

    Было бы интересно узнать насчет грамотной многопоточности и качественной работы с прокси (проверка, обработка ошибок и так далее)

  2. 2 On 06.05.2008, GTAlex said:

    Вау!!! Какие люди читают мой скромный блог ! не ожидал :)

    Ну а на счёт многопоточности и работы с проксями буду постить — насколько это будет грамотно — судить не мне (походу договорился я)

  3. 3 On 07.05.2008, Очень простой php парсер : Блог Молчуна said:

    [...] Для примера рассмотрим задачу воровства кейводров. По хорошему кеи добываются приблизительно так (если конечно не покупать готовую базу) — сначала грабим с какого нить подходящего ресурса (вордтрекер, увертюра и т.д. для англоязычных кеев) (директ, майл для русскоязычных) в глубь — это поисковые запросы с указанным кеем 2х, 3х словники и в ширь — это кеи синонимы или просто кеи, которые часто ищут вместе с исходым. Потом вся эта куча (либо только однословник) чекается на биды и возможно конкуренцию. Ненужное выкидываем, по остальному лепим доры. Дальше [...]

  4. 4 On 11.05.2008, SEOVirus.RU » Blog Archive » Полезно прочитать (11.05.08) said:

    [...] Очень простой php парсер [...]

  5. 5 On 12.05.2008, SeoVirus said:

    На многопоточность было бы очень интересно посмотреть :)

    Запросы через прокси, наверное, CURL'ами будешь реализовывать?

    Если будешь конечно этим заморачиваться...

  6. 6 On 13.05.2008, Player said:

    Спасибо, щас нужно будет его протестировать как работает !

  7. 7 On 19.05.2008, claygod said:

    А я и копипастом могу...

  8. 8 On 05.06.2008, Вирусное СЕО said:

    Я кстати тоже чиркнул пару строк о парсинге на РНР:

    seovirus.ru/parsing-legko...t-seovirusa.html

    это такой... своеобразный небольшой туториал получился...

  9. 9 On 07.06.2008, Арт said:

    Спасибо

  10. 10 On 26.06.2008, Еще о парсерах said:

    [...] этого поста о парсерах рекомендую посмотреть здесь — очень простое решение с поиском готовых, уже кем-то [...]

  11. 11 On 15.07.2008, Очень простой php парсер | Ваз Калина. Обзор, ремонт, тест, покупка, продажа. said:

    [...] опубликована Блог GTAlex — деньги из паутины. Пожалуйста, оставляйте комментарии [...]

  12. 12 On 22.07.2008, GiN said:

    Было бы крайне интересно узнать:

    1. Как парсить странички,на которые попадает пользователь,если авторизуется.

    2. Как подставлять куки.

    3. Что все-таки с прокси и другими хитростями.

    Заранее признателен.

  13. 13 On 27.07.2008, webzanie.info said:

    Я теперь хоть разобрался, что за слово такое «парсить», а то ну никак не въезжал. А проверка обратных ссылок тоже через парсер делается?

  14. 14 On 28.07.2008, claygod said:

    Просто в напарсенном массиве ищешь ссылки на себя

  15. 15 On 29.07.2008, webzanie.info said:

    Глупый вопрос: а нельзя Php код парсить?

  16. 16 On 29.07.2008, claygod said:

    webzanie.info, нельзя, так как РНР исполняется на сервере, а посетителю в браузер выдаётся только результат работы РНР скрипта.

  17. 17 On 29.07.2008, webzanie.info said:

    Claygod, вот! Это все знают, а можно ли как-нибуль php код вытащить, или это под силу только опытным хакерам?

  18. 18 On 29.07.2008, claygod said:

    Только через хаканье сервера

  19. 19 On 21.09.2008, Dominatos said:

    Чёт не запахал код

    Пишет:

    Parse error: syntax error, unexpected '!' in T:\home\red.ru\www\pars.php on line 15

  20. 20 On 15.01.2009, Texter said:

    Если хотите плагиет в промышленных масштабах, то относительно универсальный парсер romb.ru есть. Спасибо!

  21. 21 On 04.02.2009, сео-студент said:

    Dominatos, когда скопируешь код в редактор, замени все " на нормальные кавычки.

    Здесь вордпресс их заменяет на другие.

  22. 22 On 15.03.2009, Диана said:

    пыталасб разобраться, но ничего не вышло

  23. 23 On 15.03.2009, GTAlex said:

    Что именно не понятно то ?

  24. 24 On 15.03.2009, GiN said:

    С момента моего вопроса к этой статье (22 июля 2008 года) прошло 8 месяцев.

    На вопрос ответа так и не получил, но зато сам во всем чудесно разобрался.

    Для удачного парсинга есть определенный набор средств:

    1. cURL — и куки подставит, и через прокси подрубится, и авторизуется куда надо. Мега-вещь.

    2. DOM — регулярки — это зло. Используйте DOM для разбора документа.

    3. XPath — удобный и быстрый способ добраться до нужного элемента страницы.

    Многие могут сказать — DOM'ом парсить удобно только валидные html документы. Нифига. Невалидные тоже легко.

    4. Tidy — инструмент, который позволит из любого невалидного документа сделать валидный. Идет как часть PECL.

    Ну в принципе и всё. Может как-нибудь напишу много интересных статей о том, как распарсить всё и вся в интернете =)

  25. 25 On 15.03.2009, GTAlex said:

    хм ...

    сорри GiN что я так и не дал ответа

    22 июля — мой день рождения, возможно именно поэтому твои вопросы остались без ответа ;)

    сначала отложил — а потом и забыл ...

    а возможно даже к лучшему — то до чего доходишь сам так сказать с потом и кровью

    дает гораздо более лучший результат, чем если бы я тебе сухо ответил «юзай CURL»

    кстати я именно курлом все достаю где нужна авторизация и пр. — в общем полная имитация работы пользователя (в принипе можно на сокетах организовать свой подобный класс).

    про DOM регулярки ничего не слышал — мне хватает обычных регулярных выражений.

    XPath тоже не юзал — мне для спамилки как то понадобился инструмент для парсинга форм со всеми её элементами — нашел довольно неплохой класс (на блоге уже как то публиковал его)

    а дорабатывать страничку Tidy перед парсингом — идея отличная, сам как то недопер

  26. 26 On 15.03.2009, GiN said:

    Ну раз был д.р. — то все понятно.

    DOM и Xpath — удобные средства для того, что бы быстро добраться до нужного элемента.

    А часто бывает что код не валидный и DOM отваливается. Говорит что ничего не может сделать, вот тут Tidy и нужен. А так он бесполезен в принципе.

    Регуляркам плевать что в них пихать =)

  27. 27 On 26.03.2009, Алекс said:

    красивы пример, учитывая что он такой коротки и еще работает, по поводу многопоточности в парсере написано на www.deepestweb.com/?p=161, правда части 2 я там не нашел, но может и появится.

  28. 28 On 22.04.2009, Beramb said:

    Вопрос такой:

    можно ли получить в переменную html код дивов, содержимое которых вставляется яваскриптом , а яваскрипт берет эти данные с сервера посредством аякс.

    т.е те данные которые грузятся аяксом с сервера по умолчанию, при открытии определенног урла.

    В браузере они видны, а в исходном коде пустые дивы :(

  29. 29 On 22.04.2009, Always last said:

    Самое обсуждаемое на блогах:
    Светлана Бахмина освобождена по УДО
    Динара Сафина -теннисистка номер 1 в мире
    Погиб музыкант группы «Любэ» Анатолий Кулешов

  30. 30 On 20.12.2009, сибиряк said:

    за пример парсера спасибо, для новичков пример в самый раз.

  31. 31 On 22.03.2010, Антон said:

    Классный парсер, возьму его за основу.

  32. 32 On 22.03.2010, Антон said:

    Какие синонимайзеры посоветуете для уникализации контента ? Желательно на php .

  33. 33 On 05.04.2010, Александр said:

    учусь парсить

    спасибо за пример

  34. 34 On 15.11.2010, Sergey said:

    Статья о том как написать парсер сайта webdevart.ru/articles/ent...hem-parser-sayta

  35. 35 On 02.12.2010, fox_white said:

    Код не работает. Перепечатал вручную символ в символ.

    Выдает: Notice: Undefined offset: 1 in...

  36. 36 On 02.03.2011, Антон said:

    Товарищ! Надо было БОЛЬШУЩИМИ буквами на видном месте написать, что скрипт заточен под конкретный дор и с другими сайтами он будет работать только при наличии некоторых совпадений в коде страниц. 1,5 часа из-за этого потерял, хотя, конечно, новичку в ПХП это полезно. Спасибо за скрипт.

  37. Always Last said:
    Самое обсуждаемое на блогах:
    «За честные выборы»
    посвященная «антиоранжевому» митингу
    на Поклонной горе

Оставить комментарий

  • Ссылочки