[Yuanshin] Statistiques de Pixiv pour chaque personnage (1). Qui a le plus de photos ? Qui a le plus de photos dans R18 ?

Voir le premier article pour les résultats statistiques.

Le code a été open source sur GitHub

Tous les projets de crawler ci-dessous ont des didacticiels et des codes sources détaillés, qui ont été empaquetés et téléchargés sur Baidu Cloud. Le lien se trouve à la fin de l'article !

Scannez le code QR ici pour l'obtenir et vous pouvez l'obtenir par vous-même ~~~

Pour être honnête, cela devrait être le projet de crawler le plus inconfortable que j'ai jamais fait. Il a fallu deux jours et demi pour le faire, pourquoi ne pas Je le fais.

En raison du mécanisme anti-escalade de Pixiv, le beau code a été empilé dans une montagne de merde.

Définissons d'abord notre logique statistique.

Pour compter le nombre d'images de chaque personnage, vous pouvez rechercher directement le nom du personnage sur Pixiv, mais pour les crawlers, vous pouvez utiliser le lien suivant.

image

Les principales langues utilisées dans Pixiv sont le chinois simplifié, le chinois traditionnel, le japonais, l'anglais et le coréen.Bien que certains créateurs utilisent le russe, étant donné que Genshin God n'a pas de version russe, nous ne comptons pas les russes.

Dans le même temps, nous avons remarqué que pour chaque nom de personnage, certains des noms recherchés ne sont pas nécessairement liés au dieu d'origine, nous ne pouvons donc naturellement pas permettre qu'ils soient inclus dans les statistiques.

image

Il existe également des œuvres non liées à Yuan Shenying sous la balise Lumine

OK, donc pour résumer, notre logique est la suivante :

  1. Obtenez d'abord les noms de chaque personnage du Dieu original dans chaque langue, comme Kaeya, Kaeya, ガイア, 케이아.
  2. Ensuite, explorez toutes les œuvres basées sur ces noms sur Pixiv,
  3. Toutes les œuvres explorées ne sont pas liées à Yuanshen. Par conséquent, nous créons une liste et exigeons qu'un élément de cette liste apparaisse dans l'œuvre, ou le nom d'autres personnages Yuanshen (n'importe quelle langue convient). Il est jugé appartenir à l'image du personnage originel du dieu dont la liste précise sera donnée ultérieurement
  4. Comptez les parties non répétitives des œuvres ci-dessus.

Le package utilisé est le suivant.

image

Tout d'abord, nous devons obtenir les noms des personnages de Yuanshen, qui peuvent être trouvés sur le site officiel de Yuanshen.

image

Cependant, dans le processus d'exploration proprement dit, ce site Web échoue souvent à changer de langue ou saute automatiquement en fonction de l'adresse IP.

Il peut même renvoyer du contenu à moitié anglais et à moitié japonais. J'ai donc enregistré manuellement le code source de ce site Web dans chaque langue,

image

Le nom en chinois simplifié peut être trouvé sur le site officiel national de Yuanshen, qui est similaire au site officiel international, mais faites attention, vous devez faire attention.

L'ordre de Keqing et Qiqi sur le site Web officiel national est erroné et doit être ajusté dans le code source enregistré.

image

chinois traditionnel

image

Chinois simplifié (ordre erroné)

Utilisez ensuite la régularisation pour identifier les noms de langue de chaque caractère.

image

Notez que pour l'exactitude des données, certains ajustements peuvent être apportés aux noms de certains personnages de la femme de riz, et certains contenus de recherche peuvent être ajoutés

image

image

Attention, il n'y a pas de Ying et Kong sur le site officiel de Yuanshen, et un traitement particulier s'impose

image

En ce qui concerne le fait de juger si une œuvre est liée au personnage divin original, notre logique est que si le nom d'autres personnages divins originaux apparaît dans l'œuvre, ou le nom de ce personnage dans une langue autre que la langue originale, ou une liste répertoriée dans le liste ci-dessous élément, il est considéré comme étant lié au rôle du dieu d'origine.

Notez que la casse est ignorée.

jugeTag=['原神','Genshin','Impact','MiHoYo','MiHoYo','HoYoLAB','원신','HOYOVERSE','miHoYo','Mond',' Liyue','Sumi ','Inazuma','Fontaine','Nata','Thiver','Tivat','Mondstadt','Liyue','Inazuma','Sumeru', 'Fontaine', 'Natlan', 'Snezhnaya', 'Grand-père', 'Paimon', 'Paimon', 'Voyageur', 'Executor', 'Scrub', 'The Forest Book', 'Lannaro' ,'Gemini','Fools','Traveller','Traveler', 'Leiyin Quanxian','Seven Stars','Water','Fire','Rock','Ice','Wind',' Thunder','Grass','タル蛍','Thunder Movie','Raiden True','Thunder Movie','Golden Dreamland','Abyss','Abyss','Seven Saints Call','Twins','Honkai','Star Railway','Alicia','Elysia','Maid ', 'Voyageur', 'Voyage', 'Prince', 'Gedd', 'Fenghua Festival', 'Festival des lanternes de la mer','Enchevêtrement','Wish','Pull','Sea Prayer Island','Coral Palace ','Yuanxia Palace','Dust Song','Grandma Ping','Longji Snow Mountain',' Blue Wind Heights', 'Feng Xiao Shan Slope', 'Bright Crown Mountain', 'Falling Star Valley', 'Min Forest', 'Lisha Suburb', 'Yun Lai Hai', 'Clear Water Plain', 'Sweet Flower', 'Layer Abyss', 'Status', 'Tianli', 'Qiana', 'Punition for Eating Rocks', ' Fée sautant par-dessus le mur', 'Bouddha sautant par-dessus le mur', 'Brochettes de poulet aux champignons sauvages', 'Coral Palace', 'Heart Sea','Pyro','Cyro','Hydro','Nature','Anemo ',' Geo','Dendro','Electro','Swirl','Original Stone','Primogen','Jade','God','Fate','Entrelacé','Entrelacé','Serenitea' ,'Artefact','Sainte Relique','Docteur','Docteur','Doujin']

Après cela, c'est l'événement principal, crawling Pixiv.

Pixiv ne se connecte pas et ne permet pas de grimper, mais il faut apprendre à être flexible, on ne veut pas durcir l'interface de connexion, on prend un chemin détourné.

image

Nous copions directement le cookie que nous avons vu dans le navigateur après la connexion et l'écrivons dans l'en-tête.

(Quant à la raison pour laquelle j'ai utilisé plusieurs cookies, j'en parlerai plus tard)

image

Après avoir reçu le cookie, nous renverrons le contenu normal lorsque nous explorerons à nouveau les balises.

Notez cependant que le contenu n'est pas renvoyé dans le code HTML de la page Web, mais doit demander une autre page avant de nous renvoyer un contenu significatif.

image

Parmi eux, le cercle rouge indique la balise et la page qui doit être demandée.

Plus précisément, nous devons utiliser l'en-tête avec les cookies pour générer ce lien, puis le demander, afin que nous puissions obtenir un contenu significatif.

Ce lien est très simple, il est généré en épissant les chaînes suivantes.

image

requestURL='https://www.pixiv.net/ajax/search/artworks/'+name+'?word='+name+'&order=date_d&mode=all&p='+str(page)+'&s_mode=s_tag_full&type=all&lang=zh&version=1bb9c95cd9cbc108a16ddf9fea198f3210ac5053'

image

Après cela, vous devez charger le json

Utilisez ensuite la régularisation pour filtrer les informations utiles

image

Notez cependant que Pixiv a un mauvais caractère, s'il y a trop de requêtes dans un court laps de temps, un contenu vide sera renvoyé, vous devez donc juger si le contenu est vide.

image

En même temps, s'il n'y a vraiment aucun contenu sous cette balise, la valeur renvoyée est également vide.

image

De plus, si le réseau n'est pas bon, vous pouvez recevoir du contenu vide ou incomplet.

Enfin, parfois, le réseau est normal et Pixiv traite également la réponse normalement, mais le contenu renvoyé est incomplet ou un autre contenu incomplètement lié est renvoyé.

Enfin, lorsque tout le contenu a été crawlé, laissez page+=1 crawler le contenu de la page suivante. Pixiv ne renverra pas 404, mais renverra également une valeur nulle.

Il convient également de noter que le contenu renvoyé est répété, et cela doit également être pris en compte.

Si vous écrivez votre propre code, vous devez tenir compte des problèmes ci-dessus. Mon code a été pris en compte et le test a réussi.

Comme mentionné précédemment, l'exploration de Pixiv est très lente, nous utilisons donc le multi-threading.

image

Mais le multi-threading est facile à interdire les cookies, nous créons donc plusieurs cookies et concevons un ensemble d'algorithmes pour décider quel cookie utiliser.

Si une requête échoue, le temps de sommeil de ce cookie sera augmenté de 20 secondes.

image

Lors du changement de cookie, vous devez dormir pendant le temps de sommeil correspondant au cookie

image

Une fois que Mei a traité avec succès 6 caractères (noms dans toutes les langues), le temps de veille doit être réinitialisé. Il ne dégénérera pas en un seul mode cookie à la fin.

image

Quant à la visualisation des résultats après l'exécution de main.py, c'est trop long pour en parler, et c'est tout le dessin de matplotlib. Si vous avez des questions, n'hésitez pas à me les poser dans la zone de commentaires.

Guess you like

Origin blog.csdn.net/libaiup/article/details/129765124