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

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

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

Сообщение sapogi77 » 03 апр 2018, 17:54

Победил я парсер через Google вот теперь хочу точно такой же через Яндекс сделать. За основу взял вот этот вот скрипт http://www.x-scripts.com/scripts/parser_yandex.php

Скачал. Запустил не нажимало на кнопку. Переделал, на кнопку стало нажимать, но не получает ссылки из выдачи просто ходит по выдаче и всё.

<?php

$xhe_host ="127.0.0.1:7010";

// The following code is required to properly run XWeb Human Emulator
require("../../Templates/xweb_human_emulator.php");

// //////////////////////// настройки скрипта /////////////////////////
// файл с данными для скрипта
$keys = file("data/keys.txt");

// глубина прохода в поисковые результаты
$cnt_pages = 10;
// текущая страница
$crnt_page =1; 

// скрипт работает в режим отладки
$dbg = true;

// //////////////////////// дополнительные модули ///////////////
// функции 
require_once("functions.php");

// /////////////////////// скрипт ///////////////////////////////////////////
// кол-во
for($ii=0;$ii<count($keys);$ii++)
{
	// получить запрос
	$ks = trim($keys[$ii]);

   // перейти на yandex	
   $browser->navigate("yandex.ru");

	// зададим запрос
	$input->set_value_by_name("text",$ks);
	// найти
	$btn->click_by_number(0);

	// ждём
	sleep(1);
	
   while(true)
   {
		// получить по префиксам все ссылки в виде одной строки разделённой <br> 
		$sites = $webpage->get_body_inter_prefix_all("class=\"b-serp-url__link\"","</a>",true);
		// разделить на массив, используя для разделения <br>
		$sites = explode("<br>",$sites);
		// пройдёмся по всем полученным 
		for($rw=0;$rw<count($sites);$rw++)
		{
			if(trim($sites[$rw])=="")
			continue; 
			// вывести ссылку в панель отладки 
			echo $site_link = get_string($sites[$rw],"href=\"","\" ");
         echo "<br>";
		}

		// не перешли на следующую страницу 
		if(!next_page($crnt_page)) 
		  break;
   }
}
// Quit
$app->quit();
?>

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

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

Сообщение xscripts » 03 апр 2018, 18:34

За разбор выдачи отвечает вот эта вот строка в скрипте
// получить по префиксам все ссылки в виде одной строки разделённой <br> 
$sites = $webpage->get_body_inter_prefix_all("class=\"b-serp-url__link\"","</a>",true);

Если не работает значит таких префиксов(кусков строк) нет. Тогда нам нужно определить новые префиксы для разбора. Это можно сделать следующим образом, выделяем кусок выдачи в браузере и переведя курсор мыши так, то бы он не попадал на какой то элемент страницы нажимаем правую кнопку мыши. Главное что бы при этом не сбросилось наше выделение. После клика правой кнопки мыши должно появиться контекстное меню, в котором будет пункт " Посмотреть исходный текст выбранного фрагмента". Кликаем на него. В блокноте должен открыться html код выбранного нами куска страницы. Теперь в этом коде ищем интересующие нас префиксы для разбора. В нашем случае, будет class="link link_outer_yes link_theme_outer path__item i-bem". Мы не будем брать весь кусок а возьмём только начало так что у нас будет код теперь в скрипте такой :
// получить по префиксам все ссылки в виде одной строки разделённой <br> 
$sites = $webpage->get_body_inter_prefix_all("class=\"link link_outer_yes","</a>",true);



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

По такой же логике можно сделать любой скрипт, который будет что либо собирать с сайтов. Можно делать сбор SEO данных, например ключевых слов и т.д.
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 » 03 апр 2018, 19:24

Спасибо теперь работает.

Ответить