Парсинг regex как сделать правильно?
-
Суть такая...
Имеем Им/форум/сайт не важно.
Заходим на страницу категории чтоб собрать ссылки на товары/посты/темы
Можно зайти сделать цикл по элементам - понятно но! это долго учитывая что есть пагинация на 500-1000 стр.
А можно гет запросом получить код и регуляркой выдернуть все ссылки за 1 сек и пойти дальше по пагинации,а лучше многопотоком за пару мин собрать всю 1000 пагинации.
Проблема в том что регулярка ложит все скажем 50 ссылок с страницы в переменную,а нужно как-то разложить их по 1-й в список или ресурс.
Как это сделать правильно именно в виде регулярка,чтоб без циклов?
Проект прилагаю
0_1526430123906_bbb.xml
-
@avtopars said in Парсинг regex как сделать правильно?:
экшен извлечь все данные возвращает список,
я не с той секты, но в данном конкретном случае, я бы вместо регулярок использовал xPath из раздела http, я так понимаю селектр для ссылок //a
прдон, это вернет элементы целиком //a/@href лучше.
а ссылки могут быть относительными?
-
@ruzne
Ну домен подставить к такой ссылке в итоге думаю проблемы не составит.
xPath я не знаю,но судя по текущему примеру он вытащит все ссылки,тут это уместно но в остальны случаях все не нужны.
Да Вы правы возвращает список
Следующее действие которое нужно сделать это закинуть эти ссылки в ресурс, я не нашел список->в ресурс разве циклом по 1 элементу брать с списка и писать в ресурс. Только смысл сего действа если можно было изначально так делать.А русурс нужен чтоб многопотоком после пройтись по всем ссылкам(как я понимаю список для этого не пригоден)
-
я не нашел список->в ресурс разве циклом по 1 элементу брать с списка и писать в ресурс.
Именно так, в режиме запуска это происходит мгновенно.
Только смысл сего действа если можно было изначально так делать.
Xpath выдаёт результат надёжнее регулярки и быстрее, да и потребляет меньше ресурсов (хоть я и люблю регулярки
:D
)А русурс нужен чтоб многопотоком после пройтись по всем ссылкам(как я понимаю список для этого не пригоден)
Можно ещё список записать в глобальную переменную и он будет виден всем потокам. Но чтобы потоки не брали одинаковые значения, идеально подойдёт ресурс.