[Part1] Scraping avec Python → Organisez jusqu'à csv!

en premier

Oups! C'est Jesse. Je viens de survivre du manoir et je ne suis qu'un débutant. Je vais le mettre en place pour pouvoir y faire référence, juste au cas où il y aurait à peu près le même nombre de personnes! Oh, et j'écris parce que j'ai de la chance si une personne forte s'ouvre et me donne des conseils! Lol

Oh, j'utilise python3!

Crawling x grattage avec Python et Selenium!

--Partie 1: Cette page! Entraînez-vous à récupérer et nettoyer la source en une seule page!

Contenu

À votre tour, écrivez ce que vous avez fait.

Obtenir la source de l'URL

Je me demandais si je le ferais avec les requêtes, mais est-ce limité à ceux avec des API publiques? Je ne savais pas, alors j'ai importé et utilisé le webdriver de sélénium.

Si vous n'avez pas installé de sélénium Mac: essayez d'exécuter "python3 -m pip install selenium" dans votre terminal! (Je ne sais pas pourquoi, mais j'en ai fini avec ça!) Windows: Ce serait bien de voir ça! → https://www.seleniumqref.com/introduction/python/Python_Sele_Ins.html

sample.py


import re
from selenium import webdriver
from time import sleep

def gettxt():
    #Spécifiez l'URL de la page Web dont vous souhaitez extraire la source, le chemin du chromedriver et le nom du fichier pour enregistrer le contenu!
    url = "https://www.sample.com"
    path = "/Users/sample/Downloads/chromedriver"
    filename = "data/sample.txt"

    driver = webdriver.Chrome(path)
    driver.get(url)
    sleep(5)
    output = driver.page_source

    with open(filename,"w",encoding="utf8") as f:
        f.write(output)
    sleep(3)
    driver.quit()

Bassari a coupé la partie inutile!

sample.py


def trimming():
    #Précisez le nom du fichier à lire et le fichier à écrire!
    filename = "data/sample.txt"
    filename2 = "data/sample2.txt"
    with open(filename) as f:
        cntnt = f.read()

    #Lisez la source de l'endroit que vous souhaitez découper et entrez les chaînes de début et de fin!
    regexen = [
        r'<tbody><tr class="La classe de début des informations que vous souhaitez">',
        r'</td></tr></tbody></table></div><div class="Prochain cours avec les informations que vous voulez"',
    ]
    #La forme plurielle d'index est index
    indices = [0,0]

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

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

dépannage

TypeError: expected string or bytes-like object J'ai cette erreur, C'était pénible d'oublier le prochain dernier ()! Lol () Est requis pour les fonctions qui ne prennent pas d'arguments, donc je n'y suis pas habitué.

sample.py


    matchObj.start()

Supprimer le tag

Commencez par convertir les sauts de ligne. Ensuite, mettez une virgule. Enfin, j'ai effacé toutes les balises!

J'ai pensé que ce serait bien d'écrire dans une boucle de nombres et une liste, mais Dictionary ou Map était mieux pour que vous puissiez voir la correspondance! Lol

J'ai à nouveau écrit la partie commentée ci-dessous!

sample.py


def removeTag():
    filename2 = "data/sample2.txt"
    filename3 = "data/sample3.csv"

    #N'importe quel caractère est une chaîne de caractères arbitraire avec 0 ou plusieurs répétitions!
    regex0 = r'<.*>'
    #Mais au-dessus, le tout début<Du dernier>Ne faites pas tout.
    #Derrière l'astérisque?Si vous ajoutez, il sera récupéré par l'avant.
    regex = r'<.*?>'

    regexen = [
        r'</tr>',
        r'</td>',
        r'<.*?>',
    ]
    after = [
        "\n",
        ",",
        "",
    ]

    with open(filename2) as f:
        contents = f.read()

    for i in range(0,3):
        contents = re.sub(regexen[i],after[i],contents)

    contents += ","

    with open(filename3,"w") as f:
        f.write(contents)

Correspondance la plus courte de l'expression normale

Je ne le savais pas du tout, mais quand j'ai cherché des expressions régulières, je n'ai pas trouvé la première correspondance de face! Au contraire, ils vont généralement chercher le plus long. "Normal" est difficile ...

sample.py


    #N'importe quel caractère est une chaîne de caractères arbitraire avec 0 ou plusieurs répétitions!
    regex0 = r'<.*>'
    #Mais au-dessus, le tout début<Du dernier>Ne faites pas tout.
    #Derrière l'astérisque?Si vous ajoutez, il sera récupéré par l'avant.
    regex = r'<.*?>'

Site de référence non publié

À la fin

Je le mettrai à jour si je peux faire quelque chose à l'avenir!

Recommended Posts

[Part1] Scraping avec Python → Organisez jusqu'à csv!
Grattage de la nourriture avec python et sortie en CSV
Grattage avec Selenium + Python Partie 1
Écrire en csv avec Python
Grattage avec Selenium + Python Partie 2
Sortie vers un fichier csv avec Python
Grattage avec Python
Grattage avec Python
Python: grattage partie 1
Python: grattage, partie 2
Automatisez des tâches simples avec Python Part1 Scraping
Grattage en Python (préparation)
Essayez de gratter avec Python.
Grattage avec Python + PhantomJS
Grattage avec du sélénium [Python]
Scraping avec Python + PyQuery
Scraping RSS avec Python
Comment mesurer le temps d'exécution avec Python Partie 1
Écrire des données CSV sur AWS-S3 avec AWS-Lambda + Python
Comment mesurer le temps d'exécution avec Python, partie 2
Traitement d'image avec Python (partie 2)
J'ai essayé de gratter avec Python
Connectez-vous à BigQuery avec Python
Etudier Python avec freeCodeCamp part1
Lire csv avec des pandas python
Images en bordure avec python Partie 1
Web scraping avec python + JupyterLab
Grattage au sélénium en Python
Grattage avec chromedriver en python
Grattage festif avec Python, scrapy
J'ai essayé de toucher un fichier CSV avec Python
Connectez-vous à Wikipedia avec Python
Publiez sur Slack avec Python 3
Comment télécharger avec Heroku, Flask, Python, Git (Partie 3)
Grattage avec du sélénium en Python
J'étais accro au grattage avec Selenium (+ Python) en 2020
Traitement d'image avec Python (partie 1)
Grattage avec Tor en Python
Résolution de Nampre avec Python (partie 2)
Comment télécharger avec Heroku, Flask, Python, Git (Partie 1)
Traitement d'image avec Python (3)
[Python] Un mémo pour écrire du CSV verticalement avec Pandas
Scraping prévisions météorologiques avec python
Comment télécharger avec Heroku, Flask, Python, Git (Partie 2)
Basculer python vers 2.7 avec des alternatives
[Python-pptx] Afficher les informations de police PowerPoint au format csv avec python
J'ai essayé de gratter avec du python
Web scraping débutant avec python
Télécharger le fichier csv avec python
Je veux pouvoir analyser des données avec Python (partie 3)
Je veux pouvoir analyser des données avec Python (partie 1)
Je veux pouvoir analyser des données avec Python (partie 4)
Je veux pouvoir analyser des données avec Python (partie 2)
[Python] Jusqu'à ce qu'un débutant en scraping enregistre le classement de la J-League dans un fichier CSV
Translocation de fichiers CSV avec Python Partie 1
Essayez de gratter avec Python + Beautiful Soup
Jouez des nombres manuscrits avec Python Partie 1
Lien pour commencer avec python
Créer Apache Log CSV avec Python
Scraping avec Node, Ruby et Python