Excel a appelé Kenshakun pour obtenir de manière exhaustive des informations spécifiques sur i Town Page La macro a été distribuée, mais elle ne peut plus être utilisée en raison d'un changement de spécification du côté de la page i-town en novembre 2019. Ainsi, comme pratique du grattage, un débutant en Python (un peu touché lors d'une conférence universitaire) a défié la programmation avec un soupir de souffle. Le but ultime est "d'obtenir le nom / l'adresse / la catégorie du magasin à partir d'une petite catégorie spécifique".
Bien qu'il s'agisse d'un accord de page de ville, les deux points suivants sont interdits. ・ Actes qui ont un grand impact sur le service de la page i-town ・ Le fait d'accéder à plusieurs reprises à la page i-town à l'aide d'un programme qui accède automatiquement https://itp.ne.jp/guide/web/notice/ Cette fois, c'est un putain de code qui appuie juste sur le bouton pour charger la suite de la page vers le bas, donc je suppose que c'est dans la catégorie d'utilisation normale plutôt que d'accès répété (Si ce n'est pas possible, vous ne pouvez pas atteindre le bas même en utilisation normale spécification……).
Sur l'invite Anaconda
pip install selenium
driver = webdriver.Chrome(executable_path='/Users/*****/*****/Selenium/chromedriver/chromedriver.exe')
driver.get('https://itp.ne.jp/genre/?area=13&genre=13&subgenre=177&sort=01&sbmap=false')
Après avoir spécifié le pilote, lancez l'URL spécifiée dans le navigateur. Cette fois, j'ai cherché dans la boutique pachinko, c'est donc l'URL lors de la recherche dans la zone "Tokyo" et la catégorie "jeu en salle".
while True:
try:
driver.find_element_by_class_name('m-read-more__text').click()
except:
print('☆ "Plus d'affichage" fin des hits répétés ☆')
break
Appuyez sur le bouton "Afficher plus" à plusieurs reprises jusqu'à ce que vous obteniez une erreur (= à la ligne du bas). Cela affichera toutes les informations du magasin de hits sur HTML.
elist = []
elems = driver.find_elements_by_class_name("m-article-card__header__category")
for e in elems:
elist.append(e.text)
print(elist)
str_ = '\n'.join(elist)
print(str_)
with open("str_.txt",'w')as f:
f.write(str_)
Créez une liste vide et lancez le innerText de l'élément dont le nom de classe est m-article-card__header__category. Après cela, la liste est convertie en phrases avec des sauts de ligne un élément à la fois et sortie sous forme de texte.
flist = []
elems2 = driver.find_elements_by_class_name("m-article-card__header__title__link")
for f in elems2:
flist.append(f.text)
print(flist)
str2_ = '\n'.join(flist)
print(str2_)
with open("str2_.txt",'w')as f:
f.write(str2_)
glist = []
elems3 = elems2 = driver.find_elements_by_class_name("m-article-card__lead__caption")
for g in elems3:
glist.append(g.text)
print(glist)
str3_ = '\n'.join(glist)
print(str3_)
with open("str3_.txt",'w')as f:
f.write(str3_)
print('Succès')
driver.quit()
Le titre et la légende (adresse, numéro de téléphone, station la plus proche) sont également émis de la même manière.
・ Oubliez d'ajouter: (deux-points) après pour ・ Je ne sais pas comment le répéter indéfiniment → Bien que vrai: c'était le cas. Je suis resté coincé même quand True a commencé par une majuscule ・ Je ne sais pas écrire dans un fichier → La cause était que le nom du fichier n'était pas entre "" ・ Je ne sais pas comment spécifier l'emplacement de chromeDriver → Je n'ai spécifié que le dossier contenant le pilote Chrome. Bien sûr, spécifiez Chromedriver.exe -Même si pip install selenium est exécuté à l'invite de commande, il ne peut pas être exécuté sur Spyder. → Doit être exécuté du côté Anaconda Prompt ...... Beaucoup d'autres
・ Je ne sais pas ce qu'est pip ・ Je ne comprends pas la structure du html → Je n'ai pas compris après tout, j'ai donc décidé de lancer le navigateur avec Selenium ・ En plus de [Adresse], [Numéro de téléphone] et [Station la plus proche] sont inclus. → C'est assez fatal, et il est probablement préférable d'écrire un magasin en tant que groupe (cette fois, il a été traité par Excel). Je prévois de le réécrire si nécessaire pour de bon
・ L'URL pour afficher tous les magasins du pays est https://itp.ne.jp/genre/ ・ L'URL pour afficher les magasins à Tokyo est https://itp.ne.jp/genre/?area=13
J'ai remarqué qu'il est plus facile de formater en collectant par magasin avec class = "o-result-article-list__item" au lieu de collecter par catégorie, titre et adresse.
Recommended Posts