mlu

Рейтинг
68
Регистрация
09.02.2008

Если регулярки знаете, то через CheckParams можно, модуль буквально за 10 минут делается.

rast:
А можете включить возможность парсинга http://solomono.ru/about/?r=e ?

Любой каприз за Ваше спасибо :)


<solomono module_name="Solomono" enabled="1" check_interval="0" retries="10" use_proxies="0" results_mode="2" download_size="999999">
<request>
<server address="xml.solomono.ru" port="80"/>
<headers><![CDATA[GET /?url=#$r$UrlProtocol$r$#%3A%2F%2F#$e$UrlServer$e$##$e$UrlPortDefault$e$# HTTP/1.1
Host: xml.solomono.ru
Accept-Encoding: gzip, deflate
Connection: close

]]></headers>
<checks>
<check result="good" present="1" icase="1" type="string"><![CDATA[</data>]]></check>
<check result="parse" type="*"/>
</checks>
</request>
<results>
<regexps>
<regexp name="%host%" icase="1" format="$1" default=""><![CDATA[<host>(.*?)<\/host>]]></regexp>
<regexp name="%index%" icase="1" format="$1" default=""><![CDATA[<index.*?>(.*?)<\/index>]]></regexp>
<regexp name="%index_date%" icase="1" format="$1" default=""><![CDATA[<index.*?date="(.*?)"]]></regexp>
<regexp name="%mr%" icase="1" format="$1" default=""><![CDATA[<mr>(.*?)<\/mr>]]></regexp>
<regexp name="%ip%" icase="1" format="$1" default=""><![CDATA[<ip>(.*?)<\/ip>]]></regexp>
<regexp name="%hin%" icase="1" format="$1" default=""><![CDATA[<hin.*?>(.*?)<\/hin>]]></regexp>
<regexp name="%hin1%" icase="1" format="$1" default=""><![CDATA[<hin.*?l1="(.*?)"]]></regexp>
<regexp name="%hin2%" icase="1" format="$1" default=""><![CDATA[<hin.*?l2="(.*?)"]]></regexp>
<regexp name="%hin3%" icase="1" format="$1" default=""><![CDATA[<hin.*?l3="(.*?)"]]></regexp>
<regexp name="%hin4%" icase="1" format="$1" default=""><![CDATA[<hin.*?l4="(.*?)"]]></regexp>
<regexp name="%din%" icase="1" format="$1" default=""><![CDATA[<din.*?>(.*?)<\/din>]]></regexp>
<regexp name="%din1%" icase="1" format="$1" default=""><![CDATA[<din.*?l1="(.*?)"]]></regexp>
<regexp name="%din2%" icase="1" format="$1" default=""><![CDATA[<din.*?l2="(.*?)"]]></regexp>
<regexp name="%din3%" icase="1" format="$1" default=""><![CDATA[<din.*?l3="(.*?)"]]></regexp>
<regexp name="%din4%" icase="1" format="$1" default=""><![CDATA[<din.*?l4="(.*?)"]]></regexp>
<regexp name="%hout%" icase="1" format="$1" default=""><![CDATA[<hout.*?>(.*?)<\/hout>]]></regexp>
<regexp name="%hout1%" icase="1" format="$1" default=""><![CDATA[<hout.*?l1="(.*?)"]]></regexp>
<regexp name="%hout2%" icase="1" format="$1" default=""><![CDATA[<hout.*?l2="(.*?)"]]></regexp>
<regexp name="%hout3%" icase="1" format="$1" default=""><![CDATA[<hout.*?l3="(.*?)"]]></regexp>
<regexp name="%hout4%" icase="1" format="$1" default=""><![CDATA[<hout.*?l4="(.*?)"]]></regexp>
<regexp name="%dout%" icase="1" format="$1" default=""><![CDATA[<dout>(.*?)<\/dout>]]></regexp>
<regexp name="%anchors%" icase="1" format="$1" default=""><![CDATA[<anchors>(.*?)<\/anchors>]]></regexp>
<regexp name="%anchors_out%" icase="1" format="$1" default=""><![CDATA[<anchors_out>(.*?)<\/anchors_out>]]></regexp>
<regexp name="%igood1%" icase="1" format="$1" default=""><![CDATA[<igood>(\d+)\/]]></regexp>
<regexp name="%igood2%" icase="1" format="$1" default=""><![CDATA[<igood>\d+\/(\d+)<]]></regexp>
</regexps>
<fields delimiter_replace="\;">
<field title="host" format="plain">%host%</field>
<field title="index" format="plain">%index%</field>
<field title="index_date" format="plain">%index_date%</field>
<field title="mr" format="plain">%mr%</field>
<field title="ip" format="plain">%ip%</field>
<field title="hin" format="plain">%hin%</field>
<field title="hin1" format="plain">%hin1%</field>
<field title="hin2" format="plain">%hin2%</field>
<field title="hin3" format="plain">%hin3%</field>
<field title="hin4" format="plain">%hin4%</field>
<field title="din" format="plain">%din%</field>
<field title="din1" format="plain">%din1%</field>
<field title="din2" format="plain">%din2%</field>
<field title="din3" format="plain">%din3%</field>
<field title="din4" format="plain">%din4%</field>
<field title="hout" format="plain">%hout%</field>
<field title="hout1" format="plain">%hout1%</field>
<field title="hout2" format="plain">%hout2%</field>
<field title="hout3" format="plain">%hout3%</field>
<field title="hout4" format="plain">%hout4%</field>
<field title="dout" format="plain">%dout%</field>
<field title="anchors" format="plain">%anchors%</field>
<field title="anchors_out" format="plain">%anchors_out%</field>
<field title="igood1" format="plain">%igood1%</field>
<field title="igood1" format="plain">%igood1%</field>
</fields>
</results>
</solomono>

Расставить правильные названия столбцов в field title="" ентузизьма не хватило, но, думаю, так даже понятнее для тех, кому важна эта информация.

Chyvak:
Теперь в модуле "Модуль проверки параметров Yandex-Bar, основанный на модуле HTTP" можно будет настроить вывод всех нужных параметров, по-видимому?

Да, конечно, если есть хотя бы минимальные знания регулярок, то по аналогии можете настроить выборку остальных полей, чтобы все данные выбирались одним модулем. В теге regexp задаётся регулярка, с помощью которой собираются данные, а в теге field эти данные выводятся в столбцы таблицы csv. Примеров выборки данных из XML довольно много как в самом файле конфигурации программы, так и в этом посте немного выше.

Chyvak:
Да, наверное, через тулбар. Не сочтите за наглость, а не подскажете готовое решение, или не могли бы Вы доработать модуль?

Найдите в checkparams.xml модуль <yatic> и замените в нём тег results на такой:


<results>
<regexps>
<regexp name="%tcy%" icase="1" format="$1" default=""><![CDATA[<tcy\srang=".*?"\svalue="(.*?)"/>]]></regexp>
<regexp name="%reg%" icase="1" format="$1" default="N/A"><![CDATA[Регион:\s(.*?)[\r\n]]]></regexp>
</regexps>
<fields delimiter_replace="\;">
<field title="Yandex TCY" format="plain">%tcy%</field>
<field title="Yandex Region" format="plain">%reg%</field>
</fields>
</results>

Ну и включите сам модуль, заменив enabled="0" на enabled="1" в теге yatic.

Chyvak:
А реально сделать, чтобы определялся регион сайта по Яндексу?

Не силён в методах определения региона. Через тулбарный запрос? Если через тулбарный, то можно сделать, изменив модуль yatic.

Раньше у людей такой код работал, попробуйте его проверить:


<check server="yandex.ru" port="80" send="GET /yandsearch?text=test&amp;lr=0 HTTP/1.1\r\nHost: yandex.ru\r\nConnection: close\r\n\r\n" recv="/yandex\.st\/lego/i"/>

Проверка гугла универсальная. Если не нужно конкретно бан в яндексе определять, то можете пользоваться этой проверкой прокси, она подойдёт для всех модулей яндекса из программы.

Помимо CheckParams можете еще попробовать cp2litepr, он тоже бесплатный и предназначен как раз для массовой проверки pr без прокси, за минуту на нормальном сервере можно проверить до 3-4 миллионов ссылок. Вот видео работы софта: http://youtu.be/U6nLR6JVviY

С 05.05.2012 программа стала полностью бесплатной: теперь лицензии на 3 дня выдаются совершенно бесплатно без каких-либо ограничений.

База может быть полезна хотя бы для частичного анализа бэклинков. Еще можно выдёргивать дополнительно информацию по адсенсу, аналитике, партнёркам и другим вещам, по которым можно идентифицировать владельцев сайтов. 60 тысяч сайтов - маловато, но всё равно.

Есть ли в базе HTTP-заголовки от скачиваемых сайтов?

У меня подобные базы (только для индексных страниц, но зато с очень большого количества доменов) используются в сервисе из подписи.

UPD: если, вдруг, кто-то кроме меня будет качать - сделайте лучше торрент, так быстрее раздадите терабайт.

Всего: 316