ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

13.09.2009, 21:46
|
|
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме: 6462214
Репутация:
3171
|
|
Сломаем мозг вместе.
имеем страничку: http://www.google.com/search?hl=en&q=antichat
Нужно получить все полученые результаты(ссылки,с тайтлами).
Если загнать пример в переменную - тобиш 1 сцылку,то регулярка проходит,но со страницы я немогу выдрать ничего.
Использую простую:
PHP код:
preg_match_all('#<a href="(.*)" class="l">(.*)</a>#',$text,$match);
Все время пустая.Уже испробывал все известные мне флаги,но результата - 0.
|
|
|

13.09.2009, 21:50
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
Не очень понял, про что ты, но мой скрипт валяется либо в полезных скриптах, либо еще где:
PHP код:
<?php
// Парсер url после выдачи гугла по запросу
$handler=fopen('log.txt','w'); // если не хотим терять старые данные - то "a+"
$limit = 0;
$zapros = "antichat"; // Наш запрос для поиска
$page_start = 0; // Стартовая страница из расчета 100 результатов выдачи на страницу
$page_end = 200; // Последняя страница из расчета 100 результатов выдачи на страницу
function parse_serp($engine, $query, $limit)
{
if ($limit<100) {$request = 'http://www.google.com/ie?hl=ru&num=100&start=' . $limit. '&lr=&q='.urlencode(trim($query));}
if ($limit>=100) {$request = 'http://www.google.com/ie?q=' . urlencode(trim($query)) . '&num=100&hl=ru&lr=&start=' . $limit . '&sa=N';}
$pattern = '/<a title="(.*)" href=(.*)>(.*)<\/a>/isU';
$result = file_get_contents($request);
if(preg_match_all($pattern, $result, $matches))
{
for ($i=0; $i<count($matches[0]); $i++)
{
$link = $matches[2][$i];
$serp[] = $link;
}
}
return $serp;
}
for ($i=$page_start;$i<=$page_end;$i++)
{
$result = parse_serp("google", $zapros, $i);
$log = implode("\r\n",$result);
if($handler) {fwrite($handler,$log);}
$i=$i+100;
if ($i>100) {$i=$i-1;}
}
fclose($handler);
echo "Все данные были сохранены в log.txt";
?>
На текущий момент есть многопоточный и с поддержкой прокси. Стоимость 10 000$
PS: Сорри, если недопонял вопрос
|
|
|

13.09.2009, 22:04
|
|
Постоянный
Регистрация: 16.04.2008
Сообщений: 889
Провел на форуме: 12942062
Репутация:
1550
|
|
2мохзе:
PHP код:
<?php
$t=file_get_contents("http://www.google.com/search?hl=en&q=antichat");
preg_match_all('|<h3 class=r><a href="(.*?)" class=l>(.*?)</a>|', $t, $out);
for ($i=0; $i<count($out[1]); $i++)
echo $out[1][$i]." - ".$out[2][$i]."<br>";
?>
|
|
|

15.09.2009, 17:58
|
|
Познающий
Регистрация: 16.03.2009
Сообщений: 82
Провел на форуме: 148667
Репутация:
23
|
|
есть строка 158 разних слов не считаю символи пунктуации
надо разбить ее на строки по 6 слов! и записать в масив
|
|
|

18.09.2009, 22:41
|
|
Познающий
Регистрация: 20.02.2008
Сообщений: 82
Провел на форуме: 107625
Репутация:
2
|
|
дан код:
<table>бла-бла a1a1a1 бла-бла</table><table>бла-бла a2a2a2 бла-бла</table><table>бла-бла a3a3a3 бла-бла</table>.............
как найти и удалить, к примеру, <table>бла-бла a2a2a2 бла-бла</table>
т.е. preg_replace($pattern,'',$content)
$pattern чему будет равен?
Думал, так сделать: <table>(.*)a2a2a2(.*)</table>, но тогда сюда попадает ведь весь текст.
|
|
|

18.09.2009, 22:53
|
|
Постоянный
Регистрация: 15.06.2007
Сообщений: 527
Провел на форуме: 1734541
Репутация:
214
|
|
тебе надо удлаить a2a2a2a2? или то что сбоку?
|
|
|

18.09.2009, 23:21
|
|
Познающий
Регистрация: 20.02.2008
Сообщений: 82
Провел на форуме: 107625
Репутация:
2
|
|
надо удалить всю таблицу, содержащую в себе a2a2a2a2 (например), т.е. от <table> до </table> включая и эти теги.
|
|
|

18.09.2009, 23:34
|
|
Постоянный
Регистрация: 06.02.2008
Сообщений: 494
Провел на форуме: 1754802
Репутация:
380
|
|
Сообщение от Architek86
дан код:
<table>бла-бла a1a1a1 бла-бла</table><table>бла-бла a2a2a2 бла-бла</table><table>бла-бла a3a3a3 бла-бла</table>.............
как найти и удалить, к примеру, <table>бла-бла a2a2a2 бла-бла</table>
т.е. preg_replace($pattern,'',$content)
$pattern чему будет равен?
Думал, так сделать: <table>(.*)a2a2a2(.*)</table>, но тогда сюда попадает ведь весь текст.
Cтавить жадность поменьше e.g.:
#<table>.*a2a2a2.*</table>#Us
|
|
|

22.09.2009, 13:15
|
|
Познающий
Регистрация: 16.03.2009
Сообщений: 82
Провел на форуме: 148667
Репутация:
23
|
|
Написал выражуху для поиска url в тексте
$pattern = "/^[http://www|www]+(\.[a-z])+(\.[a-z])*$/";
$find = preg_match($pattern, $text);
А пхп выдает мне
Warning: preg_match(): Empty regular expression in D:\Program Files\PHP Expert Editor
4.3\phpF.tmp on line 9
Что не так?
|
|
|

22.09.2009, 13:40
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
Ошибка синтаксиса в регулярном выражении - когда в начале и в конце регулярки "/", то надо экранировать все спецсимволы, т.е. "http:\/\/", или сделать так:
PHP код:
<pre>
<?php
@ini_set("display_errors","1");
$text = 'wetwgsdg http://site.ru sdgdsfgs34564325 http://www.site.ru/index.php ывпывапып www.rambler.ru';
$pattern = "#(http://[^\s]+)|(www.[^\s]+)#";
preg_match_all($pattern, $text, $res);
print_r ($res[0]);
?>
</pre>
Последний раз редактировалось Pashkela; 22.09.2009 в 13:46..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|