Excel namens Kenshakun, um umfassend spezifische Informationen zu i Town Page zu erhalten. Das Makro wurde verteilt, kann jedoch aufgrund einer Spezifikationsänderung auf der Seite der i-town-Seite im November 2019 nicht mehr verwendet werden. Als Übung zum Schaben forderte ein Python-Anfänger (ein wenig berührt in einer Universitätsvorlesung) das Programmieren mit einem Seufzer heraus. Das ultimative Ziel ist es, "den Namen / die Adresse / die Kategorie des Geschäfts aus einer bestimmten kleinen Kategorie zu ermitteln".
Obwohl es sich um eine Stadtseitenvereinbarung handelt, sind die folgenden zwei Punkte verboten. ・ Handlungen, die einen großen Einfluss auf den Service der i-town-Seite haben ・ Der wiederholte Zugriff auf die i-town-Seite mit einem Programm, auf das automatisch zugegriffen wird https://itp.ne.jp/guide/web/notice/ Diesmal ist es ein verdammter Code, der nur den Knopf drückt, um die Fortsetzung der Seite nach unten zu laden. Ich gehe also davon aus, dass es sich eher um die Kategorie der normalen Verwendung als um den wiederholten Zugriff handelt (Wenn dies nicht möglich ist, können Sie selbst bei normaler Verwendung nicht den unteren Bereich erreichen Spezifikation……).
Auf Anaconda Prompt
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')
Starten Sie nach Angabe des Treibers die im Browser angegebene URL. Dieses Mal habe ich den Pachinko-Shop durchsucht, daher ist es die URL bei der Suche im Bereich "Tokio" und in der Kategorie "Indoor-Spiel".
while True:
try:
driver.find_element_by_class_name('m-read-more__text').click()
except:
print('☆ "Mehr Anzeige" Ende wiederholter Treffer ☆')
break
Drücken Sie wiederholt die Taste "Mehr anzeigen", bis eine Fehlermeldung angezeigt wird (= in der unteren Zeile). Dadurch werden alle Informationen zum Treffer-Store in HTML angezeigt.
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_)
Erstellen Sie eine leere Liste und werfen Sie den inneren Text des Elements, dessen Klassenname m-article-card__header__category lautet, hinein. Danach wird die Liste in Sätze mit Zeilenumbrüchen um jeweils ein Element konvertiert und als Text ausgegeben.
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('Erfolg')
driver.quit()
Titel und Beschriftung (Adresse, Telefonnummer, nächstgelegener Sender) werden ebenfalls auf die gleiche Weise ausgegeben.
・ Vergessen Sie hinzuzufügen: (Doppelpunkt) nach für ・ Ich weiß nicht, wie ich es unendlich wiederholen soll → Während wahr: Es war. Ich blieb stecken, selbst als True mit einem Großbuchstaben begann ・ Ich kann nicht in eine Datei schreiben → Die Ursache war, dass der Dateiname nicht in "" eingeschlossen war. ・ Ich weiß nicht, wie ich den Speicherort von chromeDriver angeben soll → Ich habe nur den Ordner angegeben, der den Chrome-Treiber enthält. Geben Sie natürlich Chromedriver.exe an
・ Ich weiß nicht, was Pip ist ・ Ich verstehe die Struktur von HTML nicht → Ich habe es doch nicht verstanden, also habe ich beschlossen, den Browser mit Selenium auszuführen ・ Zusätzlich zu [Adresse] sind [Telefonnummer] und [Nächste Station] enthalten. → Dies ist ziemlich fatal und es ist wahrscheinlich besser, einen Speicher als Gruppe zu schreiben (diesmal wurde er von Excel verarbeitet). Ich habe vor, es bei Bedarf ernsthaft umzuschreiben
・ Die URL zur Anzeige aller Geschäfte im ganzen Land lautet https://itp.ne.jp/genre/ ・ Die URL für die Anzeige von Geschäften in Tokio lautet https://itp.ne.jp/genre/?area=13
Mir ist aufgefallen, dass das Formatieren einfacher ist, indem nach Speicher mit class = "o-result-article-list__item" gesammelt wird, als nach Kategorie, Titel und Adresse.
Recommended Posts