Регулярные выражения для поисковой выдаче Yandex

barkasian

Client
Регистрация
03.12.2014
Сообщения
127
Благодарностей
137
Баллы
43
Приветствую!
Помогите составить регулярное выражение, чтобы вытащить ссылки на сайты (вида http://site.ru/page.html) с результатов поиска Яндекс.
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 453
Благодарностей
5 913
Баллы
113
Вот такое попробуйте: (?<=<a\ class="b-link\ serp-item__title-link\ serp-item__title-link"\ href=").*(?="\ target)
Хотя по мне, ссылку легче выцеплять конструктором действий.
 

barkasian

Client
Регистрация
03.12.2014
Сообщения
127
Благодарностей
137
Баллы
43
Вот такое попробуйте: (?<=<a\ class="b-link\ serp-item__title-link\ serp-item__title-link"\ href=").*(?="\ target)
Хотя по мне, ссылку легче выцеплять конструктором действий.
Попробовал, много мусора вылезает.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Код:
(?<=<a\ class="b-link\ serp-item__title-link\ serp-item__title-link"\ href=").*?(?=")
 
  • Спасибо
Реакции: barkasian

barkasian

Client
Регистрация
03.12.2014
Сообщения
127
Благодарностей
137
Баллы
43
Можно в продолжении еще один незамысловатый вопрос?
Как составить регулярное выражение под Код страницы (не DOM-модель)?
Страница с результатами поиска яндекса была взята GET-запросом.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
у меня та же регулярка работает
 

barkasian

Client
Регистрация
03.12.2014
Сообщения
127
Благодарностей
137
Баллы
43

Вложения

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Все работает. Вы складываете данные в список а смотрите в одноименной переменной. Думаю так.
 
  • Спасибо
Реакции: barkasian

PostCard

Client
Регистрация
22.02.2015
Сообщения
22
Благодарностей
4
Баллы
3
А если в поиске есть реклама директа, то вместе с сылками органической выдачи яндекса вылазят и рекламные ссылки, какой регуляркой можно от их избавиться и оставить только топ 10?)
 
  • Спасибо
Реакции: LightWood

barkasian

Client
Регистрация
03.12.2014
Сообщения
127
Благодарностей
137
Баллы
43
А если в поиске есть реклама директа, то вместе с сылками органической выдачи яндекса вылазят и рекламные ссылки, какой регуляркой можно от их избавиться и оставить только топ 10?)
Собранные ссылки с поиска почистить регуляркой на содержание имени в ссылки, т.е. на yabs.*
 
  • Спасибо
Реакции: zennoX

caiman

Новичок
Регистрация
13.01.2018
Сообщения
13
Благодарностей
4
Баллы
3
Приветствую, господа.
Я - нуб, наинаю осваивать зенку.
В целях практики пытаюсь сделать парсер ссылок выдачи яндекса.

На данный момент работает следующая регулярка (для кода страницы)
(?<=target="_blank"\ href=")http[^%&]*(?="\ data-counter=)
но в результатах выдачи остаются промежуточные ссылки, что-то вроде

http://playboyrussia.com/
http://playboyrussia.com/data
http://playboyrussia.com/data/chasy
http://PlayboyRussia.com/data/chasy/top-30-luchshikh-muzhskikh-chasov/

подскажите элегантный способ оставить только необходимое (последнюю конечную ссыль)
 
Последнее редактирование:
  • Спасибо
Реакции: nesorer

Olegazzz

Client
Регистрация
09.01.2014
Сообщения
16
Благодарностей
1
Баллы
3
Приветствую, господа.
Я - нуб, наинаю осваивать зенку.
В целях практики пытаюсь сделать парсер ссылок выдачи яндекса.

На данный момент работает следующая регулярка (для кода страницы)
(?<=target="_blank"\ href=")http[^%&]*(?="\ data-counter=)
но в результатах выдачи остаются промежуточные ссылки, что-то вроде

http://playboyrussia.com/
http://playboyrussia.com/data
http://playboyrussia.com/data/chasy
http://PlayboyRussia.com/data/chasy/top-30-luchshikh-muzhskikh-chasov/

подскажите элегантный способ оставить только необходимое (последнюю конечную ссыль)
Тоже не могу решить ету проблему, помогите
 

Alex-x

Новичок
Регистрация
28.05.2016
Сообщения
7
Благодарностей
1
Баллы
1
Приветствую, господа.
Я - нуб, наинаю осваивать зенку.
В целях практики пытаюсь сделать парсер ссылок выдачи яндекса.

На данный момент работает следующая регулярка (для кода страницы)
(?<=target="_blank"\ href=")http[^%&]*(?="\ data-counter=)
но в результатах выдачи остаются промежуточные ссылки, что-то вроде

http://playboyrussia.com/
http://playboyrussia.com/data
http://playboyrussia.com/data/chasy
http://PlayboyRussia.com/data/chasy/top-30-luchshikh-muzhskikh-chasov/

подскажите элегантный способ оставить только необходимое (последнюю конечную ссыль)
Не совсем понял, последняя ссылка это рекламная или нет? Для себя писал проект так: сбор ключей по списку 1 этап - положить в список 1, сбор ключей - реклама 1 этап2 ( по тому-же ключу) положить в список 2 . После окончания всего сбора из списка 1, удалить значения списка 2. Или я может не совсем понял что имелось ввиду?
 

Moadip

Client
Регистрация
26.09.2015
Сообщения
509
Благодарностей
824
Баллы
93
Регулярки, это очень специфическая вещь.
Как правило она жрет гораздо больше вычислительных ресурсов.
На малых объемах кажется не существенно, но приведу простой пример.

10% это много или мало?

10% от 1 000, это 10.
10 % от 100 000 это 10 000

Ну я думаю аналогия понятна.
Что делать?
xpath - наше все.

Пробуйте и применяйте, гораздо лучше регулярок, не всегда, но в основном к html(да простят меня адепты регулярок:D)
Ну а не смогете составить, у нас на форуме народ адекватный, поможет, подскажет.))
 
  • Спасибо
Реакции: Yuriy Zymlex

auva

Client
Регистрация
09.02.2016
Сообщения
34
Благодарностей
4
Баллы
8

celcumplit

Client
Регистрация
18.10.2014
Сообщения
31
Благодарностей
3
Баллы
8
Есть же специальные парсеры типа Ahrefs или Aparsera, зачем изобретать велосипед. Плюс в парсинге выдачи обход блокировок очень важен. И использование клонов поисковых сиситем.
 

auva

Client
Регистрация
09.02.2016
Сообщения
34
Благодарностей
4
Баллы
8
Есть же специальные парсеры типа Ahrefs или Aparsera, зачем изобретать велосипед. Плюс в парсинге выдачи обход блокировок очень важен. И использование клонов поисковых сиситем.
Спасибо за совет, но здесь стоит вопрос не как спарсить, а как очистить...
;-)
 

auva

Client
Регистрация
09.02.2016
Сообщения
34
Благодарностей
4
Баллы
8
Видимо от народа решение не дождешься, а оно есть.;-)

Ловите кубик на C#

Код:
var urls = project.Variables["urls"].Value.Split('\n');
var urlsByHosts = urls.ToLookup(u =>
            {
                Uri uri = null;
                if(Uri.TryCreate(u, UriKind.Absolute, out uri))return uri.Host;
                return null;
            });
            var filtered = urlsByHosts.Where(u => u.Key != null).Select(u => u.OrderByDescending(x => x.Length).FirstOrDefault())
            .ToArray();
var result = string.Join("\n", filtered);
return result;
urls - это ваша переменная со списком url для обработки
 

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)