Если регулярки знаете, то через CheckParams можно, модуль буквально за 10 минут делается.
Любой каприз за Ваше спасибо :)
<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="" ентузизьма не хватило, но, думаю, так даже понятнее для тех, кому важна эта информация.
Да, конечно, если есть хотя бы минимальные знания регулярок, то по аналогии можете настроить выборку остальных полей, чтобы все данные выбирались одним модулем. В теге regexp задаётся регулярка, с помощью которой собираются данные, а в теге field эти данные выводятся в столбцы таблицы csv. Примеров выборки данных из XML довольно много как в самом файле конфигурации программы, так и в этом посте немного выше.
Найдите в 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.
Не силён в методах определения региона. Через тулбарный запрос? Если через тулбарный, то можно сделать, изменив модуль yatic.
Раньше у людей такой код работал, попробуйте его проверить:
<check server="yandex.ru" port="80" send="GET /yandsearch?text=test&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
CheckParams - бесплатный софт :)
С 05.05.2012 программа стала полностью бесплатной: теперь лицензии на 3 дня выдаются совершенно бесплатно без каких-либо ограничений.
База может быть полезна хотя бы для частичного анализа бэклинков. Еще можно выдёргивать дополнительно информацию по адсенсу, аналитике, партнёркам и другим вещам, по которым можно идентифицировать владельцев сайтов. 60 тысяч сайтов - маловато, но всё равно.
Есть ли в базе HTTP-заголовки от скачиваемых сайтов?
У меня подобные базы (только для индексных страниц, но зато с очень большого количества доменов) используются в сервисе из подписи.
UPD: если, вдруг, кто-то кроме меня будет качать - сделайте лучше торрент, так быстрее раздадите терабайт.