Регулярка для парсинга ссылок

vitbn58

Client
Регистрация
04.06.2015
Сообщения
91
Благодарностей
13
Баллы
8
Привет! Ребят не подскажите , есть ли универсальное регулярное выражение для парсинга ссылок и email-ов со страницы? . Пока пользуюсь этим (?<=href=")http://.*?(?=") и этим [\.\-_A-Za-z0-9]+?@[\.\-A-Za-z0-9]+?[\.A-Za-z0-9]{2,}, но это для конкретного сайта, неизвестно как на других будет работать. И еще вопрос как сделать, чтобы бот не уходил за пределы сайта?
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 453
Благодарностей
5 913
Баллы
113
для ссылок - http://.*?(?=")
для e-mail - (\w+@.*?\.\w+)
Поясните, что значит бот уходит за пределы сайта.
 
  • Спасибо
Реакции: vmc

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
наверно бот кликает по ссылкам, которые находятся за пределами боди страницы.
нужно каждую ссылку проверять где она находится, какой ее размер и сравнивать с шириной и высотой боди
 

vitbn58

Client
Регистрация
04.06.2015
Сообщения
91
Благодарностей
13
Баллы
8
для ссылок - http://.*?(?=")
для e-mail - (\w+@.*?\.\w+)
Поясните, что значит бот уходит за пределы сайта.
Мне допустим надо чтоб он собирал ссылки непосредственно например в пределах форума, а не выходил на сторонние ресурсы, рекламу там и прочие ненужные мне страницы. Походу это не решается, ссылка на рекламы хоть как проходит... Еще сразу спрошу. Если возможно опишите вкратце как сделать шаб, чтоб он работал многопоточно. Чет никак не соображу - не додумаюсь как как сделать чтоб каждый поток повторно ссылки не брал уже отсканированые предыдущим потоком.
 
Последнее редактирование:

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 453
Благодарностей
5 913
Баллы
113
Мне допустим надо чтоб он собирал ссылки непосредственно например в пределах форума, а не выходил на сторонние ресурсы, рекламу там и прочие ненужные мне страницы. Походу это не решается, ссылка на рекламы хоть как проходит...
Бот собирает ссылки на той странице, на которой указываете в качестве сурса. Если парсятся лишние ссылки - это точность регулярки.
 

vitbn58

Client
Регистрация
04.06.2015
Сообщения
91
Благодарностей
13
Баллы
8
Бот собирает ссылки на той странице, на которой указываете в качестве сурса. Если парсятся лишние ссылки - это точность регулярки.
Да эт я понял. Я имею ввиду. Допустим на странице есть полезные ссылки и ссылки бесполезные (реклама, ит.д.). Нет способа отсеять ненужное? Я пока майлы отсеиваю которые содержат support)
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 453
Благодарностей
5 913
Баллы
113
Да эт я понял. Я имею ввиду. Допустим на странице есть полезные ссылки и ссылки бесполезные (реклама, ит.д.). Нет способа отсеять ненужное? Я пока майлы отсеиваю которые содержат support)
А как их понять, полезные они или нет?)
 

vitbn58

Client
Регистрация
04.06.2015
Сообщения
91
Благодарностей
13
Баллы
8
А как их понять, полезные они или нет?)
)) Ну как вариант - полезные точно те что содержат в себе URL главной страницы! Наверно так тока и остается отсеивать, хотя и полезное будет уходить. Ну как говориться лучше меньше , но качественней!)
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
когда я делал для себя такой парсер то первым делом опредял доменое имя ресурса чтобы понять какие ссылки внешние, а какие внутренние. Потом просто рекусривно ходил по ссылкам и смотрел изменился ли домен после перехода. Если изменился, то значит эту ссылку удаляем если нужно. Еще лучше сразу же при получении контентайпа отсекать лишний контент, чтобы не захламлять трафик всякими картинками и прочей фигней.
для зенопостера такие задачи очень непродуктивны. Лучше пользоваться сторонним софтом без ограничений на потоки и возможностью использовать внешний пул задач и внешнее хранилище уникальных ссылок .
 

vitbn58

Client
Регистрация
04.06.2015
Сообщения
91
Благодарностей
13
Баллы
8
когда я делал для себя такой парсер то первым делом опредял доменое имя ресурса чтобы понять какие ссылки внешние, а какие внутренние. Потом просто рекусривно ходил по ссылкам и смотрел изменился ли домен после перехода. Если изменился, то значит эту ссылку удаляем если нужно. Еще лучше сразу же при получении контентайпа отсекать лишний контент, чтобы не захламлять трафик всякими картинками и прочей фигней.
для зенопостера такие задачи очень непродуктивны. Лучше пользоваться сторонним софтом без ограничений на потоки и возможностью использовать внешний пул задач и внешнее хранилище уникальных ссылок .
Да пробовал я датакол, епочта и др. - они вообще не парсят нифига большинство сайтов, какието ошибки выдают и все, а зенка тока в путь. Можешь порекомендовать нормальный сторонний?
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
я делаю парсеры на грабе https://github.com/lorien/grab
первоклассный проект и абсолютно бесплатный.
 
  • Спасибо
Реакции: Ribas

vitbn58

Client
Регистрация
04.06.2015
Сообщения
91
Благодарностей
13
Баллы
8

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
вобщето граб русский и доки на русском )
 
  • Спасибо
Реакции: vitbn58 и Ribas

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 451
Благодарностей
1 885
Баллы
113
Так а в коде страницы есть домен? Можно собирать только те ссылки, которые начинаются на нужный домен.
Т.е. регулярка, которая собирает ссылки должна выглядеть как то так:
(?<=href=")http://domen.com.*?(?=")
 
  • Спасибо
Реакции: vitbn58

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
901
Баллы
113
Граб - вещь! Сам уже 2 года гоняю.

Посмотрите xenu или netpeak spider
 
  • Спасибо
Реакции: vitbn58

vitbn58

Client
Регистрация
04.06.2015
Сообщения
91
Благодарностей
13
Баллы
8
Ну
Граб - вещь! Сам уже 2 года гоняю.

Посмотрите xenu или netpeak spider
Спасибо. Ну как я понял netpeak spider ссылки грабит. А дальше, чтобы получить мыло, загонять полученные страницы опять же в зенну и собирать мыло?
 

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
901
Баллы
113
ну да
Имхо вообще xenu поудобнее будет она прям в txt файл это все выгружает, но смотрите сами как вам проще
 
  • Спасибо
Реакции: vitbn58

7make

Client
Регистрация
25.06.2011
Сообщения
1 547
Благодарностей
1 311
Баллы
113

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с 7make какие-либо сделки.

https://developer.mozilla.org/ru/docs/Web/API/Document/links

JS => Выполнить на текущей странице

JavaScript:
var links = document.links;
var list = new Array(links.length);

for(var i = 0; i < links.length; i++) {
  list[i] = links[i].href;
}

return list.join("\n");
===

Можно еже фантом заюзать.
http://phantomjs.org/

п.с
вобщето граб русский и доки на русском )
Граб - вещь! Сам уже 2 года гоняю.
как у граба с JS дела и сколько памяти жрет в среднем на 1 поток?
 
  • Спасибо
Реакции: proffman и AZANIR

vitbn58

Client
Регистрация
04.06.2015
Сообщения
91
Благодарностей
13
Баллы
8
ну да
Имхо вообще xenu поудобнее будет она прям в txt файл это все выгружает, но смотрите сами как вам проще
Оптимально для себя решил, ссылки парсю netpeak spider, затем обычной епочтой мыло собираю по ссылкам. netpeak spider примерно 40-80 минут 20000 ссылок парсит, что неплохо. А вот со сбором мыла со спарсенных страниц, епочта быстрей оказалась чем зенна, хотя тоже медленно. Не знаешь какой парсер мыл пошустрей со страниц?
 

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
901
Баллы
113
как у граба с JS дела и сколько памяти жрет в среднем на 1 поток?
C JS у него плохо, но как то я обхожусь без него. Постер из него конечно так себе, но парсер хороший

Если честно - никогда не забивал себе голову сколько жрет на один поток. Я обычно гоняю спайдер а он однопоточный но асинхронный. Задания выдаю из генератора, сохраняю или в файл или в БД... 600 потоков - летает только в путь, а в памяти лежит... ну допусть пусть те же 600 lxml объектов страницы не думаю что это сильно больше 100 метров
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
можно вобще не парсить страницу в html, а просто искать то что нужно как в тексте.
 

proffman

Client
Регистрация
24.01.2013
Сообщения
547
Благодарностей
51
Баллы
28
https://developer.mozilla.org/ru/docs/Web/API/Document/links

JS => Выполнить на текущей странице

JavaScript:
var links = document.links;
var list = new Array(links.length);

for(var i = 0; i < links.length; i++) {
  list[i] = links[i].href;
}

return list.join("\n");
Как допилить код чтобы через запятую не парсил ссылку если в ней содержится определенный текст например
/xml
/#
и.т.д...
 

proffman

Client
Регистрация
24.01.2013
Сообщения
547
Благодарностей
51
Баллы
28
Как допилить код чтобы через запятую не парсил ссылку если в ней содержится определенный текст например
/xml
/#
и.т.д...
Нужно дописать условие и регулярку вот только с js никогда не работаю...
---
+ еще допилить домен для парсинга именно внутренних ссылок а не внешних
 

Andi88

Client
Регистрация
17.10.2015
Сообщения
228
Благодарностей
26
Баллы
28
https://developer.mozilla.org/ru/docs/Web/API/Document/links

JS => Выполнить на текущей странице

JavaScript:
var links = document.links;
var list = new Array(links.length);

for(var i = 0; i < links.length; i++) {
  list[i] = links[i].href;
}

return list.join("\n");
===

Можно еже фантом заюзать.
http://phantomjs.org/

п.с




как у граба с JS дела и сколько памяти жрет в среднем на 1 поток?
Подскажите, как сделать, чтобы сохранялся результат в список?
 

rostonix

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

Andi88

Client
Регистрация
17.10.2015
Сообщения
228
Благодарностей
26
Баллы
28

Вложения

Andi88

Client
Регистрация
17.10.2015
Сообщения
228
Благодарностей
26
Баллы
28
Разобрался с разделителями (вставить разделитель свой > галочка Regxp > вписать \n)
 
  • Спасибо
Реакции: rostonix

Redsmokky

Client
Регистрация
06.10.2015
Сообщения
313
Благодарностей
195
Баллы
43
Так а в коде страницы есть домен? Можно собирать только те ссылки, которые начинаются на нужный домен.
Т.е. регулярка, которая собирает ссылки должна выглядеть как то так:
(?<=href=")http://domen.com.*?(?=")
Не совсем понял как работает такая регулярка, я например пытаюсь им сграбить ссылки с сайта http://www.domik-v-derevne.com
Результат нулевой(
 

Вложения

vrb-by

Client
Регистрация
27.02.2016
Сообщения
128
Благодарностей
8
Баллы
18

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
  • Спасибо
Реакции: clubskynet

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