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!
--Partie 1: Cette page! Entraînez-vous à récupérer et nettoyer la source en une seule page!
Part2: https://qiita.com/Jessica_nao_/items/76efc0b99ff18c0e6bd7 J'ai utilisé Chrome Webdriver pour cliquer sur un élément de la page pour le déplacer! Les données ont été enregistrées au format csv ~.
Part3: https://qiita.com/Jessica_nao_/items/140b435a9e13054ed78e 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.
À votre tour, écrivez ce que vous avez fait.
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()
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)
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()
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)
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'<.*?>'
Je le mettrai à jour si je peux faire quelque chose à l'avenir!
Recommended Posts