Oups! Récemment, je suis Jesse (je suis de Human Wolf J ~ ♪) avec seulement 15 chats inversés! J'ai fait une suite de la dernière fois, donc je vais le sortir! Si vous le souhaitez, lisez le précédent (https://qiita.com/Jessica_nao_/items/b9f38a4413e424e3e585)!
Il n'y a qu'une seule URL, mais je voulais extraire toutes les données du tableau, qui contient 20 pages de 100 éléments chacune, à la fois. J'ai le webdriver sélénium pour faire de mon mieux! Oh, comme le dit la balise, j'utilise Python3!
--Partie2: Cette page! 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 ~.
Je pense que c'était assez intelligent d'avoir une fonction pour créer un nom de fichier! Lol
Étant donné que la partie à exporter le fichier est apparue plusieurs fois, c'est aussi
sample.py
def mkFile():
J'ai pensé qu'il aurait été préférable de coller le processus ci-dessous et de le diviser en fonctions.
De plus, je pense que c'est probablement la pierre d'achoppement la plus difficile, Le chargement de la page prendra un certain temps, alors assurez-vous de faire une pause! C'est ↓↓
sample.py
sleep(3):
N'oubliez pas d'importer le sommeil de temps en premier car vous avez une pause!
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,
#Y a-t-il des caractères qui ne peuvent 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"],
]
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.")
#Avez-vous l'impression de devoir 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'</td></tr></tbody></table></div><div class="jsgrid-pager-container"',
]
#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 removeTag(cnt):
beforeAfter = [
[r'</tr>', "\n"],
[r'</td>', ","],
[r'<.*?>', ""],
]
with open(mkFN(cnt,1),encoding=mojicode) as f:
contents = f.read()
for i in range(0,3):
contents = re.sub(beforeAfter[i][0],beforeAfter[i][1],contents)
#Ajoutez des virgules et des sauts de ligne à la fin du fichier!
contents += ",\n"
option = "a"
if cnt == 0:
option = "w"
with open(mkFN("all",2),option,encoding=mojicode) as f:
f.write(contents)
cnt = 20
gettxt2(cnt)
print("gettxt: done!")
sleep(1)
for i in range(0,cnt):
trimming(i)
print("trimming: done!")
sleep(1)
for i in range(0,cnt):
removeTag(i)
print("removeTag: done!")
Parce que j'ai lutté pendant quelques heures, je n'ai pas pu m'arrêter de crier à la fin quand j'ai vu de plus en plus d'informations ajoutées en quelques minutes! Lol J'espère m'y habituer un peu plus et me préparer dans environ 30 minutes.
--À propos de l'exportation de fichiers: https://www.javadrive.jp/python/file/index3.html#section3
Recommended Posts