greeple
Gold Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору destiny_child Цитата: Кстати и в вашем коде хорошо бы не безымянные a b c d переменные вводить в использовании;) | Это взято из букмарклета, а там каждый символ на счету, да и не зачем там расписывать это всё (abcde в функции бармалеевской из воровайки с chromewebstore, зачем мне расписывать как там написано оно?) типа такого там было, вызов это уже я с магаза тестил, методом тыка проверял работу, только он знает как правильно использовать (ну или в воровайке можно посмотреть другие вызовы) Код: function rip(a, b, c, d, e) { return (e = a && a.split(b)[1] || d && a.split(c)[1]) ? e.split(d ? d : c)[0] : '' } rip(text,'<div class="C-b-p-D-u"><a class="C-b-p-D-u-y h-C-b-p-D-xd-y f4vLXe" href="','"') | а так можно и в ответ про твой написать, про комментарии в коде, которые могли бы быть, раз уж на то пошло, чтобы было понятно что делается и зачем так Цитата: Думаете, я затрачивал его на супер идеальное следование канонам поиска по DOM? | Не думаю, просто посмотрел логами, что в переменных, чтобы понять что там выводится. Код просто не понятно как работает, поэтому так написал, что странный, выводит два раза почти одно и то же Цитата: Тупо и гарантированно в лоб отрезаем по маркерным словам часть текста и уже оттуда мы вытаскиваем всё, что совпадает с регэкспом. | тут согласен, тупо, но только регексп спасает Цитата: И ещё причина была не "налегать" на DOMParser: в целях наверное каких-то внутренних задач они формировали итоговый html не в полном соответствии со спецификацией. | кто они? в плане домпарсер, я его тоже не использую почти нигде, если можно по другому без гемора, тут так не получилось, у меня тут парсится же не вся страница, а только спойлер с Скриншоты всё что между <span>Скриншоты</span></div> и </div> ровно берёт и там ошибок быть не должно (хотя были, но только с вторым запросом к фастпику, пришлось все пробелы с табуляциями убрать из текста, чтобы рип нормально взял, может там где-то и выскочит косяк, но пока не было) но это всё так, просто проверить работу сделано, потому как пользоваться через api.allorigins.win/get?url чтобы cors обойти, когда несколько запросов делается не удобно будет, после наведения на ссылку будет кружок долго ждать ответа, это того не стоит, я бы оставил как есть ну ещё есть вариант в браузере выключить cors --disable-web-security --disable-site-isolation-trials (второй флаг не помню зачем добавлял, но вроде с первым уже работают запросы) а ну и ещё такой --user-data-dir=%TMP%\temporary-chrome-profile-dir чтобы профиль в темпе пустой был, не знаю без него будет работать тот флаг или нет, по идее должен добавлю ещё если в браузере отключить cors, то в консоли браузера вот таким вариантом если проверять запросы Код: var doc = [...new DOMParser().parseFromString((x=new XMLHttpRequest,x.open("GET","https://rutracker.org/forum/viewtopic.php?t=6624497",!1),x.send(),(function(a,b,c,d,e){return(e=a&&a.split(b)[1]||d&&a.split(c)[1])?e.split(d?d:c)[0]:''})(x.responseText,'<span>Скриншоты</span></div>','</div>')), "text/html").querySelectorAll('a')].map(item=>(x=new XMLHttpRequest,x.open("GET",item.href,!1),x.send(),(function(a,b,c,d,e){return(e=a&&a.split(b)[1]||d&&a.split(c)[1])?e.split(d?d:c)[0]:''})(x.responseText.replace(/\s/g,''),'</span><imgsrc="','"'))); console.log(doc) | то работает, и с фастпика страница приходит в таком виде, что не надо выбирать по \ и \n, это api.allorigins.win/get?url добавляет все символы переносов и пустых строк, поэтому в том коде можно было наверно не добавлять .replace(/\s/g,''), а вот в таком где не через api.allorigins.win/get?url надо, чтобы выбрать правильно кусок. | Всего записей: 7641 | Зарегистр. 11-02-2020 | Отправлено: 22:18 14-05-2025 | Исправлено: greeple, 01:35 15-05-2025 |
|