С нами с 27.02.04
Сообщения: 926
Рейтинг: 47
|
Добавлено: 18/11/06 в 12:56 |
Гугл изменил выдачу, нужно подправить скрипт.
p.s.: скрипт на пёрле написан.
оставляйте аськи здесь.
|
|
|
|
С нами с 16.11.06
Сообщения: 10
Рейтинг: 10
|
Добавлено: 18/11/06 в 13:06 |
388495163
|
|
|
|
С нами с 26.10.02
Сообщения: 151
Рейтинг: 148
|
Добавлено: 18/11/06 в 13:33 |
удали в скрипте <p class=g> и будет счастие ;)
|
|
|
|
С нами с 27.02.04
Сообщения: 926
Рейтинг: 47
|
Добавлено: 18/11/06 в 18:48 |
Респект, thanx
|
|
|
|
форумъ сдохъ
С нами с 01.10.04
Сообщения: 4621
Рейтинг: 481
|
Добавлено: 10/12/06 в 18:41 |
бля... у меня в скрипте используется парсер гугла. сейчас глянул, а не пашет скрипт. там, где результаты парсинга должны быть пусто. и <p class=g> в парсеере не нашел.
Код: | /**
* Удаление всех ненужных тегов из $text
* @param $text string Код html
* @return string
*/
function cleanUp($text) {
$text = preg_replace("/<span\s+dir=ltr.+/si", "", $text);
$text = preg_replace("/\sclass=[^\s>]+\s/si", " ", $text);
$text = preg_replace("/\sclass=[^\s>]+>/si", ">", $text);
return preg_replace(
"/<table[^>]*>|<\/table>"
. "|<br[^>]*>"
. "|<p[^>]*>|<\/p>"
. "|<tbody[^>]*>|<\/tbody>"
. "|<thead[^>]*>|<\/thead>"
. "|<th[^>]*>|<\/th>"
. "|<td[^>]*>|<\/td>"
. "|<tr[^>]*>|<\/tr>/si", " ", $text);
}
/**
* Инициализирует массив ссылок на страницы результата запроса
* Для других поисковиков переопределяется
* @return boolean
*/
function initPagesLinks() {
$match = array();
$pattern = "/<div\s+class=n>(.+?)<\/div>/si";
if (!preg_match($pattern, $this->pageContent, $match)) {
return false;
}
$html = @html_doc($match[1]);
$links = $html->get_elements_by_tagname("a");
for ($i = 0; $i < sizeof($links); $i++) {
$this->pagesLinks[] = $links[$i]->get_attribute("href");
}
// Сохранить урл последней ссылки
if (sizeof($links) > 0) {
$this->lastPageUrl = $this->pagesLinks[sizeof($links) - 1];
}
return true;
}
/**
* Проверка - последняя страница результатов
* @param $num string Номер ссылки (начинаются с нуля)
* @return boolean
*/
function isLastPage($url) {
return (strcmp($this->lastPageUrl, $url) == 0);
}
/**
* Добавление в массив items данных из полученной страницы
* Для других поисковиков переопределяется
* @return boolean
*/
function initItems() {
$matches = array();
$pattern = "/<p[^>]*>(.+?)<font[^>]*>(.+?)<font[^>]*>/si";
if (!preg_match_all($pattern, $this->pageContent, $matches, PREG_SET_ORDER)) {
return false;
}
$newItemsCount = 0;
$pattern = "/onmousedown=\"[^\"]+\"/i";
for ($i = 0; $i < sizeof($matches); $i++) {
if (isset($matches[$i][1])) {
if (strpos($matches[$i][1], "<hr class=z>") !== false
|| strpos($matches[$i][2], "<a href=") !== false
|| strpos($matches[$i][0], "[PDF]") !== false) continue;
$desc = trim($this->cleanUp($matches[$i][2]));
if (strlen($desc) < $this->minTextLen) continue;
$link = $this->cleanUp(preg_replace($pattern, "", $matches[$i][1]));
if (preg_match("/href=\"([^\">]+)\"/i", $link, $linkMatches)) {
$url = trim($linkMatches[1]);
}
else {
$url = "";
}
$link = preg_replace("/<a[^>]+>|<\/a>/si", "", $link);
//$link = trim(strip_tags(html_entity_decode($link)));
//$desc = trim(strip_tags(html_entity_decode($desc)));
$link = trim(html_entity_decode(strip_tags($link)));
$desc = trim(html_entity_decode(strip_tags($desc)));
if (strlen($url) > 0 && strlen($link) > 0 && strlen($desc) > 0) {
$this->items[] = array($url, $link, $desc);
$newItemsCount++;
}
}
}
return ($newItemsCount > 0);
}
/**
* Возвращает урл ссылки на результат запроса
* @param $num integer Номер ссылки (начинаются с нуля)
* @return string
*/
function getPageLink($num) {
$this->lastUrl = $this->getUrl() . "&start=" . ($num * 100);
return $this->lastUrl;
}
/**
* Инициализирует содержимое страницы
* @param $num integer Номер ссылки (начинаются с нуля)
*/
function getPageContent($num = -1) {
$hConn = curl_init();
if ($num >= 0) {
// Возвращает указаную страницу запроса
curl_setopt($hConn, CURLOPT_URL, $this->getPageLink($num));
}
else {
// Возвращает первую страницу запроса
curl_setopt($hConn, CURLOPT_URL, $this->getUrl());
}
curl_setopt($hConn, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($hConn, CURLOPT_FOLLOWLOCATION, 1);
// Использовать прокси, если задан
if (isset($this->proxy) > 0) {
curl_setopt($hConn, CURLOPT_PROXY, $this->proxy);
}
$this->pageContent = curl_exec($hConn);
curl_close($hConn);
}
/**
* Инициализирует items по запросу
* @param $query string запрос для поисковика
* @param $limit integer кол-во элементов из результата запроса
*/
function getContent($query, $limit = 10) {
$this->items = array();
$this->baseQuery = $query;
if ($limit == SITES_UNLIMITED) {
$limit = 1000;
}
$this->resultsNum = $limit;
$this->maxItemsNum = min(100, $limit);
$this->pagesNum = ceil($this->resultsNum / $this->maxItemsNum);
$this->getPageContent();
if (strlen($this->pageContent) == 0) {
return new PEAR_Error("Can't load first page from search engine");
}
// Попытки запроса, пока не будет получен результат
$i = 0;
$res = $this->initItems();
while (!$res && $i < $this->maxTryQuery) {
$this->getPageContent();
$res = $this->initItems();
$i++;
}
if (!$res) {
return new PEAR_Error("Can't load data from search engine");
}
// Если результат на нескольких страницах - обработка страниц
for ($i = 1; $i <= $this->pagesNum; $i++) {
$this->getPageContent($i);
if (!$this->initItems()) break;
$this->initPagesLinks();
if ($this->isLastPage()) break;
}
return true;
}
}
?>
|
не вижу я там там <p class=g>, тыкните носом
|
|
|
|
ГДЕ, СУКА, САЙНЫ?
С нами с 17.03.06
Сообщения: 3995
Рейтинг: 3366
|
Добавлено: 10/12/06 в 23:05 |
|
|
|
|
форумъ сдохъ
С нами с 01.10.04
Сообщения: 4621
Рейтинг: 481
|
Добавлено: 10/12/06 в 23:53 |
и что?
|
|
|
|
ГДЕ, СУКА, САЙНЫ?
С нами с 17.03.06
Сообщения: 3995
Рейтинг: 3366
|
Добавлено: 10/12/06 в 23:56 |
найди это:
Цитата: |
$pattern = "/<p[^>]*>(.+?)<font[^>]*>(.+?)<font[^>]*>/si";
|
|
|
|
|
форумъ сдохъ
С нами с 01.10.04
Сообщения: 4621
Рейтинг: 481
|
Добавлено: 11/12/06 в 00:33 |
спасибо большое! ;)
|
|
|
|