Помогите переделать скрипт под парсер email

Все вопросы касательно бесплатной версии программы можно задать здесь
sapogi77
Сообщения: 17
Зарегистрирован: 27 мар 2018, 15:48

Помогите переделать скрипт под парсер email

Сообщение sapogi77 » 27 мар 2018, 15:54

В папке My Scripts есть скрипт parser_google.php для разбора поисковой выдачи Google. Хочу переделать его на сбор email адресов с сайтов. Как это сделать?

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: Помогите переделать скрипт под парсер email

Сообщение Support » 27 мар 2018, 16:00

Уже есть такой готовый - Скрипт Human Emulator сборщик email адресов.

Внизу страницы есть ссылка на скачивание. Качаете, распаковываете в папку My Scripts и запускаете. Возможно что то придётся поправить в скрипте, что бы он стал рабочий так как скрипт довольно старый.

sapogi77
Сообщения: 17
Зарегистрирован: 27 мар 2018, 15:48

Re: Помогите переделать скрипт под парсер email

Сообщение sapogi77 » 27 мар 2018, 16:43

Скачал, распаковал, запустил и в итоге скрипт не работает.

В окне отладки пишет
[ 27.03.18 16:41:16] скрипт запустили
обработали все страницы 1
обработали все страницы 1
обработали все страницы 1
обработали все страницы 1
[ 27.03.18 16:41:36] скрипт закончил работу
вбивает в поле поиск текст запросов и ничего больше не происходит.

Аватара пользователя
xscripts
Сообщения: 80
Зарегистрирован: 24 янв 2012, 12:48
Контактная информация:

Re: Помогите переделать скрипт под парсер email

Сообщение xscripts » 27 мар 2018, 17:32

sapogi77 писал(а):
27 мар 2018, 16:43
вбивает в поле поиск текст запросов и ничего больше не происходит.
Скорее всего не нажимается кнопка Искать.

В скрипте сборщик мыл:
 // перейти на гугль	
	 $browser->navigate("google.com");
	sleep($wt);
	
	// задаём слово в поиск
	$input->set_value_by_name("q",$key);
	
	// нажать enter
	$button->click_by_name("btnG");
	sleep($wt);


а надо :
// перейти на гугль	
   $browser->navigate("google.com");

   // задаём слово в поиск
   $input->set_value_by_name("q",$key);
   $input->click_by_name("q");
   // нажмём пробел для отключения всплывшей подсказки
   $keyboard->send_key(32,true);

   // нажать enter
   $keyboard->send_key(13,true);

	// ждём
	sleep(1);
http://x-scripts.com/

Код: Выделить всё

<?php
$xhe_host ="127.0.0.1:7010";

require("../Templates/xweb_human_emulator.php");

$browser->navigate("http://x-scripts.com");

$app->quit();?>

sapogi77
Сообщения: 17
Зарегистрирован: 27 мар 2018, 15:48

Re: Помогите переделать скрипт под парсер email

Сообщение sapogi77 » 27 мар 2018, 17:42

Заменил. Теперь после ввода текста и нажатия на кнопку Искать скрипт переходит на выдачу, но в окне отладке опять

[ 27.03.18 17:39:55] скрипт запустили
обработали все страницы 1
обработали все страницы 1
обработали все страницы 1
обработали все страницы 1
[ 27.03.18 17:40:08] скрипт закончил работу

Аватара пользователя
xscripts
Сообщения: 80
Зарегистрирован: 24 янв 2012, 12:48
Контактная информация:

Re: Помогите переделать скрипт под парсер email

Сообщение xscripts » 27 мар 2018, 17:46

Это говорит о том что не происходит разбор поисковой выдачи.

Открываем скрипт get_mail.php и видим там следующий код для разбора выдачи
// получим все ссылки на сайты заключённые в тэгах <cite>
$sites=$webpage->get_body_inter_prefix_all("<cite>","</cite>");
$sites=explode("<br>",$sites);

а если мы откроем скрипт parser_google.php, о котором вы писали в самом начале то там разбор выдачи:

 
// получим все ссылки на сайты заключённые в тэгах <cite>
$sites=$webpage->get_body_inter_prefix_all("<cite ","cite>");
$sites=explode("<br>",$sites);
Соответственно заменяем один код другим.
http://x-scripts.com/

Код: Выделить всё

<?php
$xhe_host ="127.0.0.1:7010";

require("../Templates/xweb_human_emulator.php");

$browser->navigate("http://x-scripts.com");

$app->quit();?>

sapogi77
Сообщения: 17
Зарегистрирован: 27 мар 2018, 15:48

Re: Помогите переделать скрипт под парсер email

Сообщение sapogi77 » 27 мар 2018, 18:38

Пришлось ещё подправить ещё вот этот код
// переходим на сайт
$site=str_replace("<b>","",trim($sites[$i]));
$site=str_replace("</b>","",$site);

$site=get_string($site, ">","</");
if($site=="")
continue;

и только после этого скрипт начал собирать email-ы. Отработал 13 минут и собрал всего 38 мыл. Как то не густо.

Аватара пользователя
xscripts
Сообщения: 80
Зарегистрирован: 24 янв 2012, 12:48
Контактная информация:

Re: Помогите переделать скрипт под парсер email

Сообщение xscripts » 27 мар 2018, 18:57

sapogi77 писал(а):
27 мар 2018, 18:38
и только после этого скрипт начал собирать email-ы. Отработал 13 минут и собрал всего 38 мыл. Как то не густо.
Попробуйте отключить все настройки браузера, кроме js, что бы могли грузиться страницы со скриптами. Картинки и всё остальное вам не нужно. Должно будет работать быстрее. Основное время тут уходит на загрузку страниц.
http://x-scripts.com/

Код: Выделить всё

<?php
$xhe_host ="127.0.0.1:7010";

require("../Templates/xweb_human_emulator.php");

$browser->navigate("http://x-scripts.com");

$app->quit();?>

sapogi77
Сообщения: 17
Зарегистрирован: 27 мар 2018, 15:48

Re: Помогите переделать скрипт под парсер email

Сообщение sapogi77 » 28 мар 2018, 16:01

Попробуйте отключить все настройки браузера, кроме js, что бы могли грузиться страницы со скриптами. Картинки и всё остальное вам не нужно. Должно будет работать быстрее. Основное время тут уходит на загрузку страниц.
Да это помогло, стало побыстрее работать вроде. По крайней мере страницы мелькают быстрее в браузере. Но вот заметил, что не все email-ы собирает скрипт. Есть страницы, на которые скрипт заходит и там есть мыло, но в файле с результатами я этого адреса не нахожу. :(

Аватара пользователя
xscripts
Сообщения: 80
Зарегистрирован: 24 янв 2012, 12:48
Контактная информация:

Re: Помогите переделать скрипт под парсер email

Сообщение xscripts » 28 мар 2018, 16:38

Непосредственно за сбор адресов эл. почты отвечает регулярное выражение
// ищем все email на странице
preg_match_all('#[\w\d.-_]+@([\w\d.-_]+\.)+[a-zA-Z]{2,6}#i', $webpage->get_source(), $matches);
после чего мы удаляем лишнее из полученных строк и записываем это в файл:
                        // пройдёмся по полученным результатам
			foreach ($matches[0] as $key=>$value)
			{
				// уберём лишнее
				$str_mail=str_replace(">","",$value);
				$str_mail=str_replace("<","",$str_mail);  
				$str_mail=str_replace("mailto:","",$str_mail);   
				$str_mail=str_replace("/","",$str_mail); 
				$str_mail=str_replace("mail:","",$str_mail);  
		 
				// запишем в файл
				$textfile->add_string_to_file($file_res,trim($str_mail)."\r\n",60) ;
		       }
Поэтому если что то не попадает оно может не соответствовать регулярному выражение. Попробуйте поиграться с ним в интернете можно найти много пр имеров по запросу "php регулярные выражения email".

вот например https://ru.stackoverflow.com/questions/ ... 0%B8-email
http://x-scripts.com/

Код: Выделить всё

<?php
$xhe_host ="127.0.0.1:7010";

require("../Templates/xweb_human_emulator.php");

$browser->navigate("http://x-scripts.com");

$app->quit();?>

sapogi77
Сообщения: 17
Зарегистрирован: 27 мар 2018, 15:48

Re: Помогите переделать скрипт под парсер email

Сообщение sapogi77 » 28 мар 2018, 17:37

переделал так :
	
// ищем все email на странице
preg_match_all('/[-0-9a-z_]+@[-0-9a-z_]+\.[a-z]{2,6}/i', $webpage->get_source(), $matches);

Вроде стало работать лучше, но заметил что скрипт не ходит по страницам выдачи, а обрабатывает только одну. Хотя в настройках скрипта стоит:
// глубина прохода в поисковые результаты
$cnt_pages = 10;
// текущая страница
$crnt_page =1; 

Аватара пользователя
xscripts
Сообщения: 80
Зарегистрирован: 24 янв 2012, 12:48
Контактная информация:

Re: Помогите переделать скрипт под парсер email

Сообщение xscripts » 28 мар 2018, 18:04

За хождение по страницам отвечает код:
// не перешли на следующую страницу 
if(!next_page($crnt_page)) 
   break;
Сама функция находится в файле functions.php
// следующая страница
function next_page(&$crnt_page)
{
      global $anchor, $browser, $app,$cnt_pages;
      // количество поисковых страниц
      $crnt_page=$crnt_page+1;

      if($cnt_pages!=-1)
      {
            // останавливаем скрипт
            if($crnt_page>$cnt_pages)
            { 
              debug_mess("обработали все заданные страницы ".($crnt_page-1));
              return false;
            }
      }
      // перейдём на следующую страницу с результатами
      if(!$anchor->click_by_inner_text($crnt_page,true))
      {
           debug_mess("обработали все страницы ".($crnt_page-1));
           return false;
      }

      debug_mess("обработали страницу ".($crnt_page-1));
      return true;
}

То есть для перехода на следующую страницу используется код
// перейдём на следующую страницу с результатами
if(!$anchor->click_by_inner_text($crnt_page,true))

При этом если кликать через контекстное меню и выбрать эту функцию для ссылки с текстом 2 получим:
$anchor->click_by_inner_text("
2",false );
ТО есть в тексте ссылки присутствует перенос строки перед номером. Переделаем нашу функцию таким вот образом:
 // перейдём на следующую страницу с результатами
      if(!$anchor->click_by_inner_text("
$crnt_page",false))
      {
           debug_mess("обработали все страницы ".($crnt_page-1));
           return false;
      }
http://x-scripts.com/

Код: Выделить всё

<?php
$xhe_host ="127.0.0.1:7010";

require("../Templates/xweb_human_emulator.php");

$browser->navigate("http://x-scripts.com");

$app->quit();?>

sapogi77
Сообщения: 17
Зарегистрирован: 27 мар 2018, 15:48

Re: Помогите переделать скрипт под парсер email

Сообщение sapogi77 » 28 мар 2018, 18:44

Работает! Только вот всё равно как то медленно... :(

Аватара пользователя
xscripts
Сообщения: 80
Зарегистрирован: 24 янв 2012, 12:48
Контактная информация:

Re: Помогите переделать скрипт под парсер email

Сообщение xscripts » 28 мар 2018, 20:33

Надо всё таки делать поправку на то, что вы работаете в бесплатной версии. В последней версии сам браузер работает намного быстрее и можно работать во многопотоке. Если же вам не нужно загрузки JS при сборе, то можно использовать функцию load_web_page. Она грузит страницу напрямую без браузера. Ну или вообще использовать CURL, но его можно использовать и без Хумана. НО с Хуманом намного удобнее :), так как вам доступен весь функционал по обработке собранных данных. В общем, как видите выбор инструментов и возможных путей реализации в этом вопросе большой, а дальше всё зависит от того как хорошо вы знакомы с программированием.
http://x-scripts.com/

Код: Выделить всё

<?php
$xhe_host ="127.0.0.1:7010";

require("../Templates/xweb_human_emulator.php");

$browser->navigate("http://x-scripts.com");

$app->quit();?>

sapogi77
Сообщения: 17
Зарегистрирован: 27 мар 2018, 15:48

Re: Помогите переделать скрипт под парсер email

Сообщение sapogi77 » 28 мар 2018, 21:26

xscripts писал(а):
28 мар 2018, 20:33
Надо всё таки делать поправку на то, что вы работаете в бесплатной версии. В последней версии сам браузер работает намного быстрее и можно работать во многопотоке. Если же вам не нужно загрузки JS при сборе, то можно использовать функцию load_web_page. Она грузит страницу напрямую без браузера. Ну или вообще использовать CURL, но его можно использовать и без Хумана. НО с Хуманом намного удобнее :), так как вам доступен весь функционал по обработке собранных данных. В общем, как видите выбор инструментов и возможных путей реализации в этом вопросе большой, а дальше всё зависит от того как хорошо вы знакомы с программированием.
Честно сказать я c PHP только вот начинаю знакомиться с помощью Хумана :)

Возможности программы конечно впечатляют, понимаю что если полностью разобраться, то можно всё что угодно делать с её помощью. Вот только осталось разобраться :wink:

Ответить