[Part.3] Exploration avec Python! C'est JSON plutôt que CSV! ??

en premier

Oups! C'est bon à mâcher et il semble que 2 loups survivent, alors je vais au pilier du chat noir!

Si vous enregistrez les données, vous ne pourrez pas comprendre comment gérer les virgules, et après tout JSON est plus stable que CSV! ?? (Je ne sais pas ...) Vous n'avez pas du tout besoin de feuilles de calcul ou d'Excel, non? Que pourrai-je dire un jour ...?

Donc, j'ai fait une suite de la dernière fois, donc je vais le publier.

Crawling x grattage avec Python et Selenium!

--Partie3: Cette page! J'ai pensé qu'il serait préférable d'utiliser JSON même s'il y avait ":" ou "," dans les données, donc je l'ai sauvegardé en tant que liste de liste JSON! Je pense que ça fait du bien parce que je l'ai réparé un peu.

Aperçu

Je vais vous expliquer les fonctions dans l'ordre du haut!

--mkFN: Une fonction qui crée un nom de fichier! --gettxt2: Enregistrez la source sous forme de texte lors de la navigation sur la page Web! Ceci est fait pour qu'une fois que vous le faites, toutes les pages que vous voulez soient affichées dans l'ordre! Cette fois, il y a un élément appelé "Suivant", et j'ai essayé de répéter "Cliquez ici → Récupérer l'élément de la page affichée"! --trimming: J'ai coupé tous les fichiers et les ai enregistrés dans un autre fichier txt! --removeTagForJSON: Formatez-le dans un fichier JSON! Tout d'abord, j'ai supprimé la balise et mis des parenthèses pour que la dernière liste n'ait pas de virgule, et il était gênant de faire des ajustements fins ~ pleurer --ʻAddBlackets`: Au début et à la fin, j'ai ajouté un crochet []! J'ai fait beaucoup de refaire avec les ajustements fins ci-dessus à plusieurs reprises! Lol

Livrables

sample.py


import re
from selenium import webdriver
from time import sleep

#Je pensais qu'il valait mieux l'ouvrir avec Excel, alors Shift_Je suis allé à JIS une fois, mais y avait-il des caractères qui ne pouvaient pas être affichés? Je ne sais pas, mais j'ai abandonné parce que j'ai eu une erreur.
mojicode = "utf8"

def mkFN(cnt,typeindex):
    types = [
        ["sample_", ".txt"],
        ["trimmed_", ".txt"],
        ["fin_", ".csv"],
        ["JSON_fin_",".json"],
    ]
    cntstr = str(cnt)
    if len(cntstr) == 1:
        cntstr = "0" + cntstr
    ans = "data/"
    ans += types[typeindex][0] + cntstr + types[typeindex][1]
    return ans

def gettxt2(cnt):
    url = "https://www.sample.com"
    path = "/Users/sample/Downloads/chromedriver"
    fn0 = "data/sample"
    fn1 = ".txt"
    
    driver = webdriver.Chrome(path)
    driver.get(url)
    sleep(3)
    output = driver.page_source
    filename = mkFN(0,0)
    with open(filename,"w",encoding=mojicode) as f:
        f.write(output)
    print(filename + ": done.")

    #Je ne sais pas pourquoi, mais il semble que je doive l'initialiser à nouveau?
    output = driver.page_source
    sleep(3)

    for i in range(1,cnt):
        element = driver.find_element_by_link_text("Next")
        element.click()
        sleep(3)
        output = driver.page_source

        filename = mkFN(i,0)
        with open(filename,"w",encoding=mojicode) as f:
            f.write(output)
        print(filename + ": done.")


def trimming(cnt):
    filename = mkFN(cnt,0)
    filename2 = mkFN(cnt,1)
    with open(filename) as f:
        contents = f.read()
    regexen = [
        r'<tbody><tr class="jsgrid-row">',
        r'</table></div><div class="sample"',
    ]
    #La forme plurielle d'index est index
    indices = [0,0]

    for i in range(0,2):
        matchObj = re.search(regexen[i],contents)
        indices[i] = matchObj.start()
    rslt = contents[indices[0]:indices[1]]

    with open(filename2,"w",encoding=mojicode) as f2:
        f2.write(rslt)

def removeTagForJSON(cnt):
    beforeAfter = [
        [r'<tr.*?><td.*?>','\t["'],
        [r'</td><td.*?>','","'],
        [r'</td></tr>','"],\n'],
        [r'<.*?>', ""],
    ]

    with open(mkFN(cnt,1),encoding=mojicode) as f:
        contents = f.read()

    for i in range(0,4):
        contents = re.sub(beforeAfter[i][0],beforeAfter[i][1],contents)

    option = "a"
    if cnt == 0:
        option = "w"
    with open(mkFN("all",1),option,encoding=mojicode) as f:
        f.write(contents)

def addBlackets():
    with open(mkFN("all",1),encoding=mojicode) as f:
        contents = f.read()
    contents = "[\n" + contents[0:-2] + '\n]' 
    option = "w"
    with open(mkFN("all2",3),option,encoding=mojicode) as f:
        f.write(contents)

cnt = 20
gettxt2(cnt)

sleep(2)

for i in range(0,cnt):
    trimming(i)
print("trimming: done!")

for i in range(0,cnt):
    removeTagForJSON(i)
sleep(1)
addBlackets()

À la fin

Cette fois, c'est environ 20 pages, donc j'ai fait des fichiers un par un, mais cela semble difficile si je n'écris pas après avoir correctement mis en forme lorsque 8000 pages ou plus transitions! Lol Mais tant que je ne vais pas à 100100 pages, puis-je simplement le laisser tel quel?

Recommended Posts

[Part.3] Exploration avec Python! C'est JSON plutôt que CSV! ??
[Part1] Scraping avec Python → Organisez jusqu'à csv!
Lire JSON avec Python et générer un CSV
Convertir JSON en CSV avec Python de Splunk
[Python] Utiliser JSON avec Python
Comment convertir un fichier JSON en fichier CSV avec Python Pandas
Traitement d'image avec Python (partie 2)
Etudier Python avec freeCodeCamp part1
Lire csv avec des pandas python
Images en bordure avec python Partie 1
Grattage avec Selenium + Python Partie 1
POST json avec le script Python 3
Etudier Python avec freeCodeCamp part2
Traitement d'image avec Python (partie 1)
Résolution de Nampre avec Python (partie 2)
Traitement d'image avec Python (3)
Écrire en csv avec Python
Grattage avec Selenium + Python Partie 2
Formater json avec Vim (avec python)
Télécharger le fichier csv avec python
Lire des données json avec python
[Part.2] Exploration avec Python! Cliquez sur la page Web pour vous déplacer!
Translocation de fichiers CSV avec Python Partie 1
Jouez des nombres manuscrits avec Python Partie 1
Créer Apache Log CSV avec Python
[Python] Ecrire dans un fichier csv avec Python
[Automatisé avec python! ] Partie 1: fichier de configuration
Sortie vers un fichier csv avec Python
Encodage et décodage JSON avec python
Gérer les fichiers Excel CSV avec Python
Lire et écrire du CSV avec Python
Automatisez des tâches simples avec Python Part0
[Automatisé avec python! ] Partie 2: Fonctionnement des fichiers
Entrée / sortie de données en Python (CSV, JSON)
Jouez des nombres manuscrits avec python, partie 2 (identifier)
Modulation et démodulation FM avec Python Partie 3
Traiter les données Pubmed .xml avec python [Partie 2]
Lire le fichier CSV avec python (Télécharger et analyser le fichier CSV)
Automatisez des tâches simples avec Python Part1 Scraping
Convertir des données Excel en JSON avec python
100 traitements de langage avec Python (chapitre 2, partie 2)
Manipulation d'Azure CosmosDB à partir de Python Part.2
Lire et écrire des fichiers JSON avec Python
100 traitements de langage avec Python (chapitre 2, partie 1)
Optimiser avec l'optimisation plutôt que la conversion inverse
Modulation et démodulation FM avec Python Partie 2
Cours de production d'applications Web appris avec Flask of Python Partie 2 Chapitre 1 ~ Échange JSON ~
Python #JSON
Sortie CSV de la recherche Google avec [Python]! 【Facile】
Grattage de la nourriture avec python et sortie en CSV
Apprentissage automatique à partir de Python Personal Memorandum Part2
Créez des données de test comme ça avec Python (partie 1)
Lire les données csv Python avec Pandas ⇒ Graphique avec Matplotlib
Apprentissage automatique à partir de Python Personal Memorandum Part1
Lire et écrire des fichiers CSV et JSON avec Python
Générez une instruction d'insertion à partir de CSV avec Python.
Translocation de fichiers CSV en Python Partie 2: Mesure des performances