Расширенная настройка
Discord Github Twitter Аутсорсинг
| Если вы находите Pagetual полезным и можете себе это позволить, мы будем очень признательны за пожертвование на его разработку. Если нет, не беспокойтесь – наслаждайтесь!💞 | ||||
|---|---|---|---|---|
PayPal | Ko-fi | 愛發電 | ||
| Присоединяйтесь к 💬Discord | ||||
| Следите в 🕊️Twitter | ||||
| Отправить 📧E-Mail | ||||
| Сделано с ❤️ Hoothin | ||||
[
{
"name":"yande",
"url":"^https://yande-demo\\.re/",
"pageElement":"ul#post-list-posts>li",
"nextLink":"a.next_page",
"css":".javascript-hide {display: inline-block !important;}"
},
{
"name": "so.3dm",
"url": "^https://so\\.3dmgame-demo\\.com",
"pageElement": "div.content > div.search_wrap > div.search_lis",
"action": 1
},
{
"name":"xxgame",
"url":"^http://www\\.xxgame-demo\\.net/chinese",
"pageElement":"div.layui-row>div.layui-col-md4:not(div:nth-child(5),div:nth-child(6),div:nth-child(7))",
"nextLinkByUrl":[
"(http://www\\.xxgame-demo\\.net/chinese/?)(?:\\?page=|$)(\\d*)",
"$1?page={$2+1}"
]
}
]
name
Название целевого сайта
"name": "Название сайта"
author
Автор этого правила
"author": "Hoothin"
example
Пример URL для этого правила
"example": "https://abc.com"
url
RegExp для URL целевого сайта
"url": "^https://abc\\.com/\\d+"
pinUrl
Иногда ссылка на следующую страницу или элемент страницы отсутствует. Установите true, чтобы закрепить правило только по URL, вместо поиска элементов с помощью интеллектуальных правил.
"pinUrl": true
enable
0 означает остановить действие, когда все условия совпали
"enable": 0
include
Селектор или xpath элемента, который должен присутствовать
"include": "div.content"
exclude
Селектор или xpath элемента, который не должен присутствовать
"exclude": "div.content"
wait
Время ожидания готовности страницы, когда вы уверены, что URL соответствует сайту. Вы также можете использовать код JavaScript, который возвращает булево значение, для проверки готовности страницы.
"wait": 500
"wait": "let img=doc.querySelector('ul.list img');return img!=null"
waitElement
Массив ["существует", "не существует"] содержит "селектор или xpath элемента, который должен существовать (для некоторых элементов с отложенной загрузкой)" и "селектор или xpath элемента, который не должен существовать (для некоторых плейсхолдеров загрузки, которые требуют прокрутки для отображения)".
"waitElement": [
".summary",
"#popular.fade:not(.in)"
]
action
0 означает загрузку URL и вставку статического HTML, 1 означает загрузку через iframe, чтобы динамический код JavaScript на странице мог сработать, 2 означает принудительную вставку iframe внизу страницы.
"action": 1
nextLink
Селектор или xpath ссылки на следующую страницу. Отключается, если установлено значение 0. Можно задать массив для нескольких ссылок.
"nextLink": ".page-next>a"
"nextLink": [
".page1-next>a",
".page2-next>a",
".page3-next>a"
]
nextLinkByUrl
Если нет элемента "далее", можно использовать это для генерации href из текущего URL. [0] - строка RegExp, [1] - строка для замены, [2] - селектор или xpath элемента, который должен присутствовать, [3] - селектор или xpath элемента, который не должен присутствовать. Можно использовать {} для вычисления простого кода.
"nextLinkByUrl": [
"(&page=(\\d+))?$",
"&page={$2+1}"
]
"nextLinkByUrl": [
"(&page=(\\d+))?$",
"&page={$2+1}",
".disable>button"
]
nextLinkByJs (doc)
Используйте для выполнения кода JavaScript, который возвращает URL следующей страницы, используя doc (документ каждой загруженной страницы).
"nextLinkByJs": "let n=doc.querySelector('a.curr+a');if(n)return n.href.replace(/^javascript:.*\\((\\d+)'\\);/,'$1_.html');"
stopSign
Остановить загрузку следующей страницы при совпадении с этим признаком.
"stopSign": ["#pagenum", ".disable",
[
"#pagenum",
"(\\d+)"
],
[
"#pagenum",
"\\/(\\d+)"
]
]
pageElement
Селектор или xpath основного контента, который нужно вставить. Можно задать массив для нескольких элементов.
"pageElement": ".Context>.Article"
pageElementByJs (over)
Используйте для выполнения кода JavaScript и создания элементов, которые вы хотите вставить. Требуется over(eles) для обратного вызова с массивом элементов для вставки.
"pageElementByJs": "let src=match[1]+match[3];img.onload=()=>{over([img])};img.onerror=e=>{over()};img.src=src;"
replaceElement
Селектор или xpath элемента, который вы хотите заменить новым. Может быть массивом.
"replaceElement": "#page"
"replaceElement": ["#page1", "#page2"]
lazyImgSrc
Атрибут изображения, указывающий на реальный src. Может быть установлен как ["lazysrc", "removeProp1,removeProp2"] для удаления свойств изображения.
"lazyImgSrc": "data-cfsrc"
"lazyImgSrc": ["data-lazy-src", "removeProp1,removeProp2"]
css
Добавьте CSS, чтобы показать некоторые скрытые элементы. Если начать с "inIframe:", CSS будет действовать только на следующей странице в iframe.
"css": ".card-lazy{display:none}"
insert
Позиция, в которую вы хотите вставить. Можно задать массив для нескольких позиций.
"insert": "ul#feed-main"
insertPos
1 означает вставить до, 2 - просто добавить в конец целевого элемента.
"insertPos": 2
iframeInit (win, iframe)
Код JavaScript, который выполняется как можно быстрее, до выполнения любого другого кода в iframe.
"iframeInit": "win.self=win.top;"
init (doc, win, iframe, click, enter, input)
Код JavaScript, который выполняется только один раз на текущей основной странице или в каждом iframe с doc (документ основной страницы или iframe).
"init": "if(doc)doc.querySelector('[data-title=sh]').click();"
pagePre (response)
Код JavaScript, который выполняется после получения ответа от URL следующей ссылки. Вы можете изменить содержимое ответа и вернуть его.
"pagePre": "return decodeURI(response).replace(/[\\\\]/g,'')"
pageInit (doc, eles)
Код JavaScript, который выполняется с каждой вставленной страницей, используя doc (документ каждой загруженной страницы) и eles (элементы, найденные по правилу). Выполняется до вставки, можно вызывать события, например onView().
"pageInit": "let ops=doc.querySelectorAll('op');[].forEach.call(ops,op=>{img.src=op.value;imgCon.appendChild(img)})"
pageAction (doc, eles)
Код JavaScript, который выполняется с каждой вставленной страницей, используя doc (документ каждой загруженной страницы) и eles (элементы, найденные по правилу). Выполняется после вставки, можно добавлять функции, например click().
"pageAction": "let j=document.querySelector('.lazy');eles.forEach(i=>{i.src=i.dataset.srcset;})"
filter
Фильтрация элементов, вставленных со следующей страницы.
"filter": {
"count": 20,
"words": "spams\\d",
"link": "^https://spams\\.xxx",
"selector": "div#spam"
}
loadMore
Селектор кнопки "загрузить еще".
"loadMore": ".loadMore"
sleep
Время ожидания (мс) при загрузке следующей страницы, если сайт имеет ограничение по времени между запросами.
"sleep": 1000
rate
Множитель высоты окна, можно установить на 2 или 3, если некоторые сайты медленно загружают следующую страницу.
"rate": 3
autoLoadNum
Количество страниц для автоматической загрузки после открытия страницы.
"autoLoadNum": 5
listenHashChange
Установите true, чтобы pagetual перезапускался при изменении хэша.
"listenHashChange": true
refreshByClick
Если сайт перезагружает контент без изменения URL при нажатии на кнопку отправки. Укажите селектор этой кнопки, и pagetual будет сбрасываться после клика по ней.
"refreshByClick": "#sreach"
pageNum
Укажите номер страницы с помощью $p в текущем URL. Можно использовать {} для вычисления результирующей строки из номера страницы, например {$p*25+1}.
"pageNum": "&start={15*($p-1)}"
pageBar (pageBar)
Код JavaScript для изменения pageBar. 0 означает скрыть.
"pageBar": "pageBar.classList.add('j_thread_list');"
pageBarText
Установите 1, чтобы заголовок документа следующей страницы отображался на панели страниц.
"pageBarText": 1
autoClick
CSS-селектор или xpath элемента, который вы хотите кликнуть автоматически.
"autoClick": "#btn-sky"
history
Установите 0, чтобы отключить запись в историю. Установите 1, чтобы включить запись в историю. Установите 2, чтобы запись в историю происходила немедленно после добавления контента. Независимо от значения, общая опция имеет приоритет.
"history": 1
lockScroll
Установите true, если не хотите, чтобы страница автоматически прокручивалась при переходе на следующую страницу.
"lockScroll": true
wheel
Установите true, чтобы действие перехода на следующую страницу срабатывало только при прокрутке колеса мыши.
"wheel": true
fitWidth
Установите false, если вы обнаружили, что pageElement получает неверную, слишком маленькую ширину.
"fitWidth": false
delay
Код JavaScript для задержки следующего действия до тех пор, пока он не вернет true. Используйте это свойство для получения полных элементов страницы с отложенной загрузкой.
"delay": "return document.querySelector('#feed_pagenation>li.cur').innerText>=curpage"
manualMode
Установите true, чтобы включить ручной режим. Пагинация остановится, а правая стрелка (или событие 'pagetual.next') будет привязана к нажатию на следующую ссылку.
"manualMode": true
openInNewTab
Установите true, чтобы все ссылки открывались в новых вкладках, false — чтобы они открывались в текущей.
"openInNewTab": true
pageElementCss
Стиль CSS, который вы хотите применить к каждому элементу страницы.
"pageElementCss": "color: red"
initRun
Запускать немедленно при инициализации.
"initRun": true
sideController
Показать или скрыть боковую панель инструментов sideController.
"sideController": true
listenUrlChange
Обновлять скрипт после изменения URL.
"listenUrlChange": false
clickMode
Остановить перелистывание страниц и кликнуть по следующей ссылке после прокрутки до конца.
"clickMode": true
preloadImages(doc)
Анализирует страницу и возвращает массив URL-адресов изображений, которые необходимо предварительно загрузить.
"preloadImages": "return ['1.jpg']"
child script
Если на сайте есть ограничения на выполнение кода (eval). Вы можете создать дочерний скрипт с функцией в объекте window. Имена должны начинаться с pagetual и использовать camelCase. Например: window.pagetualWait, window.pagetualNextLinkByJs, window.pagetualPageInit, window.pagetualPageAction, window.pagetualInit, window.pagetualPageBarText.