Помощь с парсингом ссылок

Регистрация
09.07.2018
Сообщения
28
Благодарностей
3
Баллы
3
Не получается спарсить ссылки с сайта. Нужно спарсить 5 ссылок внутри сайта. Я так понимаю это можно сделать через Добавить действие > Данные > Табы. Использовал этот Reject
(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?
Одну ссылку спарсить получается. Если парсить больше в список то список получается пустой. Дайте совет как сделать лучше.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 454
Благодарностей
8 678
Баллы
113
Не получается спарсить ссылки с сайта. Нужно спарсить 5 ссылок внутри сайта. Я так понимаю это можно сделать через Добавить действие > Данные > Табы. Использовал этот Reject
(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?
Одну ссылку спарсить получается. Если парсить больше в список то список получается пустой. Дайте совет как сделать лучше.
Можно использовать эту регулярку для поиска внутренних ссылок сайта:
Код:
(?<=<a.*href=")(https|http)://domain\.com.*?(?=">)
Вместо domain\.com можно подставлять заэскейпленную переменную с именем домена, чтобы искало только ссылки на внутр. стр. сайта.

upload_2018-8-13_17-24-3.png
 
Последнее редактирование:
Регистрация
09.07.2018
Сообщения
28
Благодарностей
3
Баллы
3
А можно сделать универсальный поиск ссылок для все сайтов?
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 454
Благодарностей
8 678
Баллы
113
А можно сделать универсальный поиск ссылок для все сайтов?
Способ универсальный..
Вот получше вариант универсальной регулярки:

Код:
(?<=<a.*href=")(https|http)://(www\.|)poznavayka\.org.*?(?=">)
Вместо poznavayka\.org - вставить переменную с именем домена.

upload_2018-8-13_17-35-54.png
 
Последнее редактирование:
Регистрация
09.07.2018
Сообщения
28
Благодарностей
3
Баллы
3
Спасибо!
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 165
Благодарностей
2 165
Баллы
113
Но если нам нужен идеальный парсер, то не забываем, что внутренние ссылки на некоторых донорах могу быть и относительными. И для отлова таких надо подключать посложнее логику.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 454
Благодарностей
8 678
Баллы
113
Но если нам нужен идеальный парсер, то не забываем, что внутренние ссылки на некоторых донорах могу быть и относительными. И для отлова таких надо подключать посложнее логику.
Тогда можно такой вариант парсинга сделать:
(вариант универсальный; сайт-пациент на скрине с относительными адресами страниц)

upload_2018-8-13_19-16-59.png
 
  • Спасибо
Реакции: orka13

Foster

Client
Регистрация
12.03.2018
Сообщения
16
Благодарностей
6
Баллы
3
Есть на гите такая прога под питон https://github.com/GerbenJavado/LinkFinder
парсит ссылки скрытые в том числе в javascript регуляркой (используется для поиска скрытых эндпоинтов)
Код:
(?:"|')                                  # Start newline delimiter
(
((?:[a-zA-Z]{1,10}://|//)          # Match a scheme [a-Z]*1-10 or //
[^"'/]{1,}\.                           # Match a domainname (any character + dot)
[a-zA-Z]{2,}[^"']{0,})             # The domainextension and/or path
|
((?:/|\.\./|\./)                       # Start with /,../,./
[^"'><,;| *()(%%$^/\\\[\]]    #Next character can't be...
[^"'><,;|()]{1,})                    # Rest of the characters can't be
|
([a-zA-Z0-9_\-/]{1,}/              # Relative endpoint with /
[a-zA-Z0-9_\-/]{1,}                 # Resource name
\.(?:[a-zA-Z]{1,4}|action)       # Rest + extension (length 1-4 or action)
(?:[\?|/][^"|']{0,}|))              # ? mark with parameters
|
([a-zA-Z0-9_\-]{1,}                 # filename
\.(?:php|asp|aspx|jsp|json|action|html|js|txt|xml)     # . + extension
(?:\?[^"|']{0,}|))                        # ? mark with parameters
)
(?:"|')                                # End newline delimiter
В зенке можно использовать Обработка текста - Regex
и вставить регулярку (?:"|')(((?:[a-zA-Z]{1,10}://|//)[^"'/]{1,}\.[a-zA-Z]{2,}[^"']{0,})|((?:/|\.\./|\./)[^"'><,;| *()(%%$^/\\\[\]][^"'><,;|()]{1,})|([a-zA-Z0-9_\-/]{1,}/[a-zA-Z0-9_\-/]{1,}\.(?:[a-zA-Z]{1,4}|action)(?:[\?|/][^"|']{0,}|))|([a-zA-Z0-9_\-]{1,}\.(?:php|asp|aspx|jsp|json|action|html|js|txt|xml)(?:\?[^"|']{0,}|)))(?:"|')
 
  • Спасибо
Реакции: inilim и udder

booms1

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

inilim

Client
Регистрация
16.09.2017
Сообщения
441
Благодарностей
170
Баллы
43

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 454
Благодарностей
8 678
Баллы
113
Подскажите пожалуйста, что это за куб "Получение значения"
Вы имеете ввиду Взятие значения?
Если нужно получить значение лучше всего использовать Конструктор действий в режиме Get (получить).
 
  • Спасибо
Реакции: booms1 и Mikhail B.

booms1

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

Вложения

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 328
Благодарностей
5 430
Баллы
113
  • Спасибо
Реакции: Sergodjan

booms1

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

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 454
Благодарностей
8 678
Баллы
113
По образцу от sergodjan66 пробую сделать универсальный парсер, не понимал что это за куб
Нажимаете правую кн. мыши на нужном элементе страницы и из контекстного меню выбираете пункт В конструктор действий,
там переключаетесь в режим Get и добавляете действие в проект, а потом настраиваете все поля свойств кубика как на скриншоте.
 
  • Спасибо
Реакции: Mikhail B.

booms1

Client
Регистрация
20.08.2019
Сообщения
135
Благодарностей
18
Баллы
18
Нажимаете правую кн. мыши на нужном элементе страницы и из контекстного меню выбираете пункт В конструктор действий,
там переключаетесь в режим Get и добавляете действие в проект, а потом настраиваете все поля свойств кубика как на скриншоте.
Можете подсказать, что не так делаю?
upd. проблемой оказалась невнимательность, после переменной случайно ткнул на клавиатуру и добавил точку
 

Вложения

  • Спасибо
Реакции: Sergodjan

booms1

Client
Регистрация
20.08.2019
Сообщения
135
Благодарностей
18
Баллы
18
Тогда можно такой вариант парсинга сделать:
(вариант универсальный; сайт-пациент на скрине с относительными адресами страниц)

Посмотреть вложение 31389
Реально ли парсить относительные ссылки внутри сайтов на get запросах? имею ввиду регулярку
 

booms1

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

Foster

Client
Регистрация
12.03.2018
Сообщения
16
Благодарностей
6
Баллы
3
А если нужно парсить обычные ссылки, не относительные , то можно регулярки здесь посмотреть

я такую использую
Код:
^(?:(?:(?:https?|ftp|file|gopher|sftp|dict|ldap|tftp|shttp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$|(?:\b[a-z\d.-]+://[^"<>\s]+|\b(?:(?:(?:[^\s!\\@#$%^&*()_=+[\]{}\|:'",.<>/?]+)\.)+(?:ac|ad|aero|ae|af|ag|ai|al|am|an|ao|aq|arpa|ar|asia|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|biz|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|cat|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|coop|com|com.mx|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|info|int|in|io|iq|ir|is|it|je|jm|jobs|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mil|mk|ml|mm|mn|mobi|mo|mp|mq|mr|ms|mt|museum|mu|mv|mw|mx|my|mz|name|na|nc|net|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pro|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tel|tf|tg|th|tj|tk|tl|tm|tn|to|tp|travel|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|xn--0zwm56d|xn--11b5bs3a9aj6g|xn--80akhbyknj4f|xn--9t4b11yi5a|xn--deba0ad|xn--g6w251d|xn--hgbk6aj7f53bba|xn--hlcj6aya9esc7a|xn--jxalpdlp|xn--kgbechtv|xn--zckzah|ye|yt|yu|za|zm|zw)|(?:(?:[0-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}(?:[0-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5]))(?:[?#/][^;'\\"#?<>\s]*)?(?:\?[^#<>\s]*)?(?:#[^<>\s]*)?(?!\w))
нужно " заменить на "" (если в коде, например, Regex.Matches(xx, @регулярка)) и добавить доменов second-level (co.uk и пр)
 
  • Спасибо
Реакции: auva

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