PHP скрипты

Как вы наверное знаете, я немного PHP программист. Я не считаю себя профессионалом, который решит задачу любой сложности. Я не использую ООП, и мой код частенько похож невнятную мешанину(отчасти из-за незнания, отчасти из-за лени и постоянных исправлений). Кто смотрел мои скрипты, думаю, знает это) Но это не мешает мне решать задачи, которые я перед собой ставлю - начиная от банального парсинга кеев и заканчивая хитрой авторизацией в яндексе, а так же взаимодействия с различными API (TopSape тому пример). Но если есть готовый скрипт - зачем изобретать велосипед? К сожалению, скрипты (как самописные, так и найденные в инетрнете) имеют свойство теряться. Поэтому я решил складировать их здесь, как для собственных нужд (проще зайти на свой блог и скопировать функцию, чем шариться по компу в поисках файлика), так и для общего пользования (вдруг кто-то захочет свой сервис открыть, или полезный скрипт написать). Преимущественно здесь будут скрипты, связанные с парсингом, автоматизацией, упрощению рутины и т.д. Использвать можете как угодно, только не продавайте (опен сорц рулит!). Итак, начнем:

FeedBurner Counter

function fb($feed){
$s=file_get_contents("http://feedburner.google.com/api/awareness/1.0/GetFeedData?uri={$feed}");
preg_match('/circulation="(\d+)"/'$s$a);
return $a[1];}

Все просто - выводит число подписчиков фида. Можно указывать как полный адрес, так и частичный (Spryt к примеру). Если показывается на картинке - будет показываться и здесь (в админке фидбурнера можно закрыть доступ). Во время обновления выдает 0, что не очень удобно..

Alexa Rank

function alexa($url) {
preg_match('#<div class="data .+?">(.*?)</div>#si'file_get_contents("http://www.alexa.com/siteinfo/{$url}"), $a); 
return trim(str_replace(",","",strip_tags($a[1])));}

Вводим адрес сайта (без http://) - получаем его Alexa Rank. Алекса может обидится (раньше всячески препятствовал парсинга), так что аккуратнее.

Яндекс: тИЦ

function cy($url){ 
preg_match("/value=\"(.\d*)\"/"join(""file('http://bar-navig.yandex.ru/u?ver=2&show=32&url=http://'.$url.'/')), $tic); 
return($tic[1]!=""?$tic[1]:0); }

Довольно компактный парсер тИЦа. Может дольше обновляется, чем на кнопке/в каталоге. Писал не я (некоторые моменты я тоже не вкурил - работает, и ладно).

Яндекс: число страниц в индексе

function ya_stat($url){
$str=file_get_contents("http://yandex.ru/yandsearch?numdoc=10&serverurl={$url}");
preg_match("\/<title>(.*)нашл(.*)сь(.*)страниц(.*)</title>/s"$str$find); $res=$find[3];
if(preg_match("/<title>(.*)ничего не найдено(.*)<\/title>/s"$str)) {$res=0;}
$res=str_replace("&nbsp;","",$res);
$res=str_replace("млн","000000",$res);
$res=str_replace("тыс.","000",$res);
return $res;}

Самописная байда. Использую уже довольно давно) Возможны траблы с кодировкой, используйте UTF-8. Обратите внимание на ограничения яндекса - он запросто может ограничить IP и выдавать ему капчу (если парсите сразу пачку сайтов). Между запросами лучше установить случайный интервал, вроде sleep(5,rand(1,5));

Веб прокси

echo file_get_contents($_GET['q']);

$content=file_get_contents("http://урл.сайта/имя.скрипта?=".$url); //Использование

Можно конечно использовать прокси - но это гораздо сложнее (надо парсить списки, собирать курл запрос и т.д.). А так просто размещаете на своих хостингах с разными IP файлик proxy.php, и потом скриптом случайно выбираете адрес и парсите с него. Только проверьте предварительно (некоторые хостеры закрывают доступ). Я такой начал использовать для твиттера (у него ограничение 150 запросов в час).

LiveInternet статистика


function listat($url){
$content file_get_contents("http://counter.yadro.ru/values?site=".$url); 
preg_match_all("|LI_([^ ]+) = (\d*);|",$content,$ok);
for($i=0$i<count($ok[1]); $i++) $info[$ok[1][$i]]=$ok[2][$i];
return $info;}

//Использование
$ff=listat($url);
$w_vis=floor($ff[week_vis]/7);
$w_hit=floor($ff[week_hit]/7);//Средняя посещаемость за последнюю неделю
$li_vis=$ff[day_vis];
$li_hit=$ff[day_hit];//И дневная посещаемость
echo "Week $w_vis / $w_hit, today $li_vis / $li_hit";


Информация для счетчика LiveInternet. Показывается для всех сайтов, которые не закрыли отображение инфы на счетчике (даже если сама статистика закрыта). Удобно как анализировать чужие сайты, так и просматривать суммарную посещаемость своих.

Смайлик Лебедева (ссылки из ППБ на блог)


<?php
$url
=“topsape.ru”;

$content=file_get_contents(“http://blogs.yandex.ru/search.xml?link={$url}”);

$content=iconv(“UTF-8″,“Windows-1251″,$content);

preg_match_all(“/<h3 class=\”title \”><a href=\”(.*)\” class=\” SearchStatistics-link\” target=\”_blank\”>(.*)<\/a><\/h3>(.*)<div class=\”b-text \”>\n\n(.*)<\/div><\/div><div class=\”long g-hidden ItemMore-Description\”>(.*)<ul class=\”info b-hlist b-hlist-middot\”>(.*)<li><a href=\”(.*)\”>(.*)<\/a><\/li>/”$content$link);

$str=“<div style=\”width: 300; padding: 5px; border: 1px gray dotted;\”>”;

for (
$i=0$i<10$i++) {

if(
strlen($link['1'][$i])>0) {$str.=“<b><a href=\”{$link[1][$i]}\”>{$link[2][$i]}</a></b><br>{$link[4][$i]} (<a href=\”{$link[7][$i]}\”>{$link[8][$i]}</a>)<br><br>”;}

}

$str=substr($str,0,-4);

$str.=“<div align=right>Ссылки из <a href=\”http://blogs.yandex.ru/search.xml?link={$url}\”>ППБ</a></div></div>”;

echo 
$str;
?>

Список последних 10 сайтов, которые ссылались на вас. Используется поиск по Яндекс.Блогам. Не учитываются ссылки с твиттера. В RSS отображаются только 5 последних ссылок, и только три актуальны, поэтому парсится напрямую с выдачи.

Продолжение следует! Если нужны какие-нибудь простенькие скрипты, который буду здесь уместны - обращайтесь.

Полезные ссылки:
SeoClass.php от Madbirdy (тИЦ, PR, страниц в индексе яндекса и гугла, серп яндекса и гугла)
Twitter скрипты с моего буржуйского блога - Превью пользователя, число фолловеров и френдов, бот для автоматического фолловинга и его применение (лень сюда переписывать).

Комментарии (11):

  1. SibNext

    Спасибо за подборку скриптов. В принципе все очевидно, но думаю, что новичкам, или людям не приближенным к делам веб-кодинга будет полезно.

  2. karapuzz

    Интересует скриптик для парсинга, и подобные ему)
    Но впринципе, эти, по большей мере стандартные, тоже найдут свое применение.

  3. Seoved

    Спасибки за скрипты. А можешь выложить код показа заработка на адсенс как в сайдбаре?

  4. Ветер

    Скрипт проверки PR

    $googlehost=’toolbarqueries.google.com’;
    $googleua=’Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5′;

    function StrToNum($Str, $Check, $Magic) {
    $Int32Unit = 4294967296;

    $length = strlen($Str);
    for ($i = 0; $i = $Int32Unit) {
    $Check = ($Check - $Int32Unit * (int) ($Check / $Int32Unit));
    $Check = ($Check >= 2;
    $Check1 = (($Check1 >> 4) & 0×3FFFFC0 ) | ($Check1 & 0×3F);
    $Check1 = (($Check1 >> 4) & 0×3FFC00 ) | ($Check1 & 0×3FF);
    $Check1 = (($Check1 >> 4) & 0×3C000 ) | ($Check1 & 0×3FFF);

    $T1 = (((($Check1 & 0×3C0) << 4) | ($Check1 & 0×3C)) <<2 ) | ($Check2 & 0xF0F );
    $T2 = (((($Check1 & 0xFFFFC000) << 4) | ($Check1 & 0×3C00)) <= 0; $i –) {
    $Re = $HashStr{$i};
    if (1 === ($Flag % 2)) {
    $Re += $Re;
    $Re = (int)($Re / 10) + ($Re % 10);
    }
    $CheckByte += $Re;
    $Flag ++;
    }

    $CheckByte %= 10;
    if (0 !== $CheckByte) {
    $CheckByte = 10 - $CheckByte;
    if (1 === ($Flag % 2) ) {
    if (1 === ($CheckByte % 2)) {
    $CheckByte += 9;
    }
    $CheckByte >>= 1;
    }
    }

    return ‘7′.$CheckByte.$HashStr;
    }

    function getch($url) { return CheckHash(HashURL($url)); }

    function getpr($url) {
    global $googlehost,$googleua;
    $ch = getch($url);
    $fp = fsockopen($googlehost, 80, $errno, $errstr, 30);
    if ($fp) {
    $out = “GET /search?client=navclient-auto&ch=$ch&features=Rank&q=info:$url HTTP/1.1\r\n”;
    $out .= “User-Agent: $googleua\r\n”;
    $out .= “Host: $googlehost\r\n”;
    $out .= “Connection: Close\r\n\r\n”;

    fwrite($fp, $out);
    while (!feof($fp)) {
    $data = fgets($fp, 128);
    $pos = strpos($data, “Rank_”);
    if($pos === false){} else{
    $pr=substr($data, $pos + 9);
    $pr=trim($pr);
    $pr=str_replace(”\n”,”,$pr);
    return $pr;
    }
    }
    fclose($fp);
    }
    }

    использование:
    $pr = getpr($url);

  5. Gotovsky

    Your English leaves much to be desired. Это судя по блогу тому, хотя молодец, что начал прорываться в буржунет.

  6. Крайст

    Думаю, что мне будет удобнее начинать учить пхп по твоим нано-скриптам )
    Особенно весело будет изучать пхп, в дополнение к уже слегка изученному и активно используемому питону.
    Спасибо.

  7. dan2

    Сохранил страничку себе. Правда при парсинге Яндекса возможен бан по ip, лучше пользоваться проксями.

  8. Михаил Мятов

    было бы полезно еще видеть скриптец с последними фразами, по которым пришли на сайт :)

  9. tserj

    присоединяюсь к Seoved. Ты парсишь страницу непосредственно с аккаунта или через API?

  10. Price-List

    За прокси спасибо, как-то и не подумал бы…

  11. Антон

    присоединяюсь к Seoved. Не собираешься парсер Адсенс выложить? и вообще - помню раньше у них нельзя было доходы разглашать, а теперь можно?

Комментарий:

Это не спам.
сделано dimoning.ru

Я зарабатываю:

SAPE, рефы: 228.85 руб
Блог: 200 руб
TopSape Ads: 4$ в день
SAPE: 90.12 руб
LinkFeed: 20 руб
AdSense: ~1$ в день
Итого: 689 руб в день

Рубрики:

Я(47) Блоггинг(46) Итоги(38) Заработок(25) Философия(21) Бред(19) Сателлиты(15) SEO(14) Домены(6) Каталоги(3) Буржунет(3) Гаджеты(2) Обзоры блогов(2)

Комментаторы:

Белый негр (131)
STROGOS (84)
Идущий в гору (74)
Snowcore (65)
Rigor (65)
[weber] (60)
GoldRush (60)
TraderMax (58)
KIW (53)
Kalimdor (52)

Архив: