Règle avancée
Discord
Github
Twitter Outsource
| Si vous trouvez Pagetual utile et que vous pouvez vous le permettre, un pourboire pour aider à financer son développement serait très apprécié. Si ce n'est pas le cas, ne vous inquiétez pas, profitez-en !💞 | ||||
|---|---|---|---|---|
PayPal | Ko-fi | 愛發電 | ||
| Join 💬Discord | ||||
| Follow 🕊️twitter | ||||
| Send 📧E-Mail | ||||
| Made with ❤️ by 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
Nom du site cible
"name": "Nom du site"
author
Auteur de cette règle
"author": "Hoothin"
example
Exemple d'URL pour cette règle
"example": "https://abc.com"
url
RegExp pour l'URL du site cible
"url": "^https://abc\\.com/\\d+"
pinUrl
Parfois, le lien suivant ou l'élément de page n'existe pas, réglez ceci sur true pour que vous puissiez épingler la règle juste avec l'URL au lieu de trouver des éléments par des règles intelligentes
"pinUrl": true
enable
0 signifie arrêter l'action quand tout est apparié
"enable": 0
include
Sélecteur ou xpath de l'élément qui doit être inclus
"include": "div.content"
exclude
Sélecteur ou xpath de l'élément qui ne doit pas être inclus
"exclude": "div.content"
wait
Le temps d'attente pour que la page soit prête quand vous êtes sûr que l'URL correspond au site, vous pouvez également utiliser un code javaScript qui renvoie un booléen pour vérifier si la page est prête
"wait": 500
"wait": "let img=doc.querySelector('ul.list img');return img!=null"
waitElement
Le tableau ["exist", "not exist"] contient "sélecteur ou xpath de l'élément qui doit exister (pour certains éléments à chargement paresseux)" et "sélecteur ou xpath de l'élément qui ne doit pas exister (pour certains espaces réservés de chargement qui ont besoin d'être défilés pour être chargés)"
"waitElement": [
".summary",
"#popular.fade:not(.in)"
]
action
0 signifie charger l'URL et insérer avec le HTML statique, 1 signifie charger par iframe pour que le code javaScript dynamique de la page puisse prendre effet, 2 signifie forcer l'insertion de l'iframe en bas
"action": 1
nextLink
Sélecteur ou xpath du lien de la page suivante, désactivé s'il est réglé sur 0, vous pouvez le laisser en tableau pour contenir plusieurs liens suivants.
"nextLink": ".page-next>a"
"nextLink": [
".page1-next>a",
".page2-next>a",
".page3-next>a"
]
nextLinkByUrl
S'il n'y a pas d'élément suivant, vous pouvez utiliser ceci pour générer un href à partir de l'URL actuelle, [0] signifie la chaîne RegExp, [1] signifie la chaîne de remplacement, [2] signifie le sélecteur ou le xpath de l'élément qui doit être inclus, [3] signifie le sélecteur ou le xpath de l'élément qui ne doit pas être inclus, vous pouvez utiliser {} pour évaluer un code simple
"nextLinkByUrl": [
"(&page=(\\d+))?$",
"&page={$2+1}"
]
"nextLinkByUrl": [
"(&page=(\\d+))?$",
"&page={$2+1}",
".disable>button"
]
nextLinkByJs (doc)
Utilisez ceci pour évaluer le code javaScript et retourner l'URL cible de la page suivante avec doc (document de chaque page chargée)
"nextLinkByJs": "let n=doc.querySelector('a.curr+a');if(n)return n.href.replace(/^javascript:.*\\((\\d+)'\\);/,'$1_.html');"
stopSign
Arrête de charger la page suivante quand ce signe est apparié
"stopSign": ["#pagenum", ".disable",
[
"#pagenum",
"(\\d+)"
],
[
"#pagenum",
"\\/(\\d+)"
]
]
pageElement
Sélecteur ou xpath du contenu principal qui doit être inséré, vous pouvez le laisser en tableau pour contenir plusieurs éléments de page.
"pageElement": ".Context>.Article"
pageElementByJs (over)
Utilisez ceci pour évaluer le code javaScript et créer les éléments que vous voulez insérer, une fonction over(eles) est nécessaire pour le rappel avec le tableau d'éléments à insérer
"pageElementByJs": "let src=match[1]+match[3];img.onload=()=>{over([img])};img.onerror=e=>{over()};img.src=src;"
replaceElement
Sélecteur ou xpath de l'élément que vous voulez remplacer par un nouveau, peut être un tableau
"replaceElement": "#page"
"replaceElement": ["#page1", "#page2"]
lazyImgSrc
L'attribut de l'image qui cible le vrai src, peut être réglé par ["lazysrc", "removeProp1,removeProp2"] pour supprimer les propriétés de l'image
"lazyImgSrc": "data-cfsrc"
"lazyImgSrc": ["data-lazy-src", "removeProp1,removeProp2"]
css
Ajoutez du css pour que vous puissiez afficher certains éléments cachés, commencez par "inIframe:" et ce css n'affectera que la prochaine page de l'iframe
"css": ".card-lazy{display:none}"
insert
La position où vous voulez insérer, vous pouvez le laisser en tableau pour contenir plusieurs positions.
"insert": "ul#feed-main"
insertPos
1 signifie insérer avant, 2 signifie juste ajouter en bas de la cible
"insertPos": 2
iframeInit (win, iframe)
Le code javaScript à exécuter le plus rapidement possible avant que tout autre code dans l'iframe ne s'exécute.
"iframeInit": "win.self=win.top;"
init (doc, win, iframe, click, enter, input)
Le code javaScript à exécuter une seule fois avec la page principale actuelle ou chaque iframe avec doc: (document de la page principale ou de l'iframe)
"init": "if(doc)doc.querySelector('[data-title=sh]').click();"
pagePre (response)
Le code javaScript à exécuter après avoir obtenu la réponse de l'URL du lien suivant, vous pouvez modifier le contenu de la réponse et le retourner
"pagePre": "return decodeURI(response).replace(/[\\\\]/g,'')"
pageInit (doc, eles)
Le code javaScript à exécuter avec chaque page insérée avec doc: (document de chaque page chargée) et eles: (éléments trouvés avec la règle), s'exécute avant l'insertion, vous pouvez déclencher un événement comme onView()
"pageInit": "let ops=doc.querySelectorAll('op');[].forEach.call(ops,op=>{img.src=op.value;imgCon.appendChild(img)})"
pageAction (doc, eles)
Le code javaScript à exécuter avec chaque page insérée avec doc: (document de chaque page chargée) et eles: (éléments trouvés avec la règle), s'exécute après l'insertion, vous pouvez ajouter des fonctions comme click()
"pageAction": "let j=document.querySelector('.lazy');eles.forEach(i=>{i.src=i.dataset.srcset;})"
filter
Filtre les éléments insérés depuis la page suivante.
"filter": {
"count": 20,
"words": "spams\\d",
"link": "^https://spams\\.xxx",
"selector": "div#spam"
}
loadMore
Sélecteur du bouton "charger plus"
"loadMore": ".loadMore"
sleep
Temps de veille (ms) lors du chargement de la page suivante si le site est limité par un intervalle de temps
"sleep": 1000
rate
La multi-hauteur de la fenêtre que vous pouvez régler sur 2 ou 3 alors que certains sites chargent la page suivante lentement
"rate": 3
autoLoadNum
Le nombre de pages à charger automatiquement après l'ouverture de la page
"autoLoadNum": 5
listenHashChange
Réglez ceci sur true pour que pagetual redémarre lorsque le hash change
"listenHashChange": true
refreshByClick
Si le site recharge le contenu sans changer l'URL lorsque vous cliquez sur un bouton de soumission. Réglez ceci avec le sélecteur du bouton cible, pagetual se réinitialisera après avoir cliqué dessus.
"refreshByClick": "#sreach"
pageNum
Pointez le numéro de page avec $p dans l'URL actuelle, vous pouvez utiliser {} pour évaluer la chaîne de résultat à partir du numéro de page, comme {$p*25+1}
"pageNum": "&start={15*($p-1)}"
pageBar (pageBar)
Le code javaScript pour changer la barre de page, 0 signifie cacher
"pageBar": "pageBar.classList.add('j_thread_list');"
pageBarText
Réglez sur 1 pour que le titre du document de la page suivante soit affiché sur la barre de page
"pageBarText": 1
autoClick
Le sélecteur css ou le xpath de l'élément sur lequel vous voulez cliquer automatiquement
"autoClick": "#btn-sky"
history
Réglez sur 0 pour que l'écriture de l'historique soit désactivée. Réglez sur 1 pour que l'écriture de l'historique soit activée. Réglez sur 2 pour que l'écriture de l'historique agisse immédiatement après le découpage. Quelle que soit la valeur de l'option générale.
"history": 1
lockScroll
Réglez sur true si vous ne voulez pas que la page défile automatiquement lorsque vous naviguez vers la page suivante
"lockScroll": true
wheel
Réglez sur true pour que l'action de la page suivante n'ait lieu que lorsque la molette de la souris est activée
"wheel": true
fitWidth
Réglez sur false si vous trouvez que l'élément de page obtient une mauvaise petite largeur
"fitWidth": false
delay
Le code javaScript pour retarder l'action suivante jusqu'à ce qu'il retourne true, utilisez cette propriété pour obtenir des éléments de page complets avec un chargement paresseux.
"delay": "return document.querySelector('#feed_pagenation>li.cur').innerText>=curpage"
manualMode
Réglez sur true pour activer le mode manuel, puis la pagination s'arrêtera, la flèche droite (ou l'événement 'pagetual.next') sera liée au clic sur le lien suivant.
"manualMode": true
openInNewTab
Réglez sur true pour que tous les liens s'ouvrent dans de nouveaux onglets, false pour qu'ils s'ouvrent dans le même onglet.
"openInNewTab": true
pageElementCss
Le style css que vous voulez définir pour chaque élément de page.
"pageElementCss": "color: red"
initRun
Exécuter immédiatement lors de l'initialisation.
"initRun": true
sideController
Afficher ou masquer la barre d'outils du contrôleur latéral.
"sideController": true
listenUrlChange
Actualiser le script après le changement d'URL.
"listenUrlChange": false
clickMode
Arrête la rotation de la page et clique sur le lien suivant après avoir défilé jusqu'en bas.
"clickMode": true
preloadImages(doc)
Analyse la page et renvoie un tableau d'URL d'images qui doivent être préchargées.
"preloadImages": "return ['1.jpg']"
child script
Si le site a une limite pour l'évaluation du code. Vous pouvez créer un script enfant avec une fonction sous l'objet window. Vous devez les nommer en commençant par pagetual en utilisant camelCase. Comme window.pagetualWait, window.pagetualNextLinkByJs, window.pagetualPageInit, window.pagetualPageAction, window.pagetualInit, window.pagetualPageBarText.