Als ich in Zukunft umziehen wollte, wollte ich herausfinden, welche Art von Immobilien es gibt und ob es irgendwelche Schnäppchen gibt. Da es schwierig ist, jedes Mal manuell zu überprüfen, wollte ich Eigenschaftsinformationen mithilfe des Scrapings erhalten, das ich beim letzten Mal durchgeführt habe.
Letztendlich möchte ich die erfassten Informationen einer Karte zuordnen, aber ich möchte zunächst die Eigenschaftsinformationen erfassen.
Beim Scraping wird einfach "ein Programm zum Sammeln von Informationen im Internet verwendet". Das Schaben wird in den folgenden zwei Schritten durchgeführt.
① HTML-Informationen abrufen → ② Notwendige Daten extrahieren
Zunächst zu ① Zunächst werden Webseiten in einer Sprache namens HTML erstellt. Klicken Sie auf die Pfeilseite in der oberen rechten Ecke von Google Chrome Wenn Sie auf "Andere Tools" -> "Entwickler-Tools" klicken, wird auf der rechten Seite des Bildschirms eine Liste mit Codes ausgegeben. Dies ist der Code zum Zeichnen des Bildschirms und zum Ziehen dieses Codes zum Scraping auf Ihren Computer. In Bezug auf (2) hat HTML eine verschachtelte Struktur und wird für jedes Element unterschieden oder für jedes Element beschriftet. Daher können Sie die erforderlichen Daten aus allen Daten abrufen, indem Sie die Beschriftung oder das Tag auswählen.
Die Ausführungsumgebung ist wie folgt.
Zur Implementierung habe ich auf [Andere Artikel] verwiesen (https://qiita.com/haraso_1130/items/8ea9ba66f9d5f0fc2157). Andere Artikel Ich kann das Scraping-Ergebnis nur mit dem im Artikel angegebenen erzielen, aber es dauert sehr lange, daher habe ich es ein wenig umgeschrieben.
Der ganze Code ist hier.
output.py
from bs4 import BeautifulSoup
import requests
import csv
import time
#URL (bitte geben Sie die URL hier ein)
url = 'https://suumo.jp/jj/chintai/ichiran/FR301FC001/?ar=030&bs=040&ta=13&sc=13101&cb=0.0&ct=9999999&mb=0&mt=9999999&et=9999999&cn=9999999&shkr1=03&shkr2=03&shkr3=03&shkr4=03&sngz=&po1=09&pc=50'
result = requests.get(url)
c = result.content
soup = BeautifulSoup(c, 'html.parser')
summary = soup.find("div",{'id':'js-bukkenList'})
body = soup.find("body")
pages = body.find_all("div",{'class':'pagination pagination_set-nav'})
pages_text = str(pages)
pages_split = pages_text.split('</a></li>\n</ol>')
pages_split0 = pages_split[0]
pages_split1 = pages_split0[-3:]
pages_split2 = pages_split1.replace('>','')
pages_split3 = int(pages_split2)
urls = []
urls.append(url)
print('get all url...')
for i in range(pages_split3-1):
pg = str(i+2)
url_page = url + '&page=' + pg
urls.append(url_page)
print('num all urls is {}'.format(len(urls)))
f = open('output.csv', 'a')
for url in urls:
print('get data of url({})'.format(url))
new_list = []
result = requests.get(url)
c = result.content
soup = BeautifulSoup(c, "html.parser")
summary = soup.find("div",{'id':'js-bukkenList'})
apartments = summary.find_all("div",{'class':'cassetteitem'})
for apart in apartments:
room_number = len(apart.find_all('tbody'))
name = apart.find("div",{'class':'cassetteitem_content-title'}).text
address = apart.find("li", {'class':"cassetteitem_detail-col1"}).text
age_and_height = apart.find('li', class_='cassetteitem_detail-col3')
age = age_and_height('div')[0].text
height = age_and_height('div')[1].text
money = apart.find_all("span", {'class':"cassetteitem_other-emphasis ui-text--bold"})
madori = apart.find_all("span", {'class':"cassetteitem_madori"})
menseki = apart.find_all("span", {'class':"cassetteitem_menseki"})
floor = apart.find_all("td")
for i in range(room_number):
write_list = [name, address, age, height, money[i].text, madori[i].text, menseki[i].text, floor[2+i*9].text.replace('\t', '').replace('\r','').replace('\n', '')]
writer = csv.writer(f)
writer.writerow(write_list)
time.sleep(10)
Vom obigen Code
#URL (bitte geben Sie die URL hier ein)
url = 'https://suumo.jp/jj/chintai/ichiran/FR301FC001/?ar=030&bs=040&ta=13&sc=13101&cb=0.0&ct=9999999&mb=0&mt=9999999&et=9999999&cn=9999999&shkr1=03&shkr2=03&shkr3=03&shkr4=03&sngz=&po1=09&pc=50'
Geben Sie die URL der Eigenschaftsinformationen von suumo in den Teil von ein. Führen Sie dies dann aus, und wenn output.csv ausgegeben wird, ist dies erfolgreich.
Die Ausgabe sollte in output.csv wie folgt aussehen.
output.csv(Teil)
Tokyo Metro Hanzomon Line Jimbocho Station 7 Stockwerke 16 Jahre alt,2 Kanda Jimbocho, Chiyoda-ku, Tokio,16 Jahre alt,7 Geschichten,6.90.000 Yen,Studio,13.04m2,4. Stock
Tokyo Metro Hanzomon Line Jimbocho Station 7 Stockwerke 16 Jahre alt,2 Kanda Jimbocho, Chiyoda-ku, Tokio,16 Jahre alt,7 Geschichten,7.70.000 Yen,Studio,16.64m2,4. Stock
Kudan Blumenhaus,4 Kudan Kita, Chiyoda-ku, Tokio,42 Jahre alt,9 Geschichten,7.50.000 Yen,Studio,21.07m2,5. Stock
Villa Royal Sanbancho,Sanbancho, Chiyoda-ku, Tokio,44 Jahre alt,8 Geschichten,8.50.000 Yen,Studio,23.16m2,4. Stock
Villa Royal Sanbancho,Sanbancho, Chiyoda-ku, Tokio,44 Jahre alt,8 Geschichten,8.50.000 Yen,Studio,23.16m2,4. Stock
Elemente werden durch Kommas getrennt ausgegeben und die folgenden Elemente werden jeweils angezeigt.
[Gebäudename],[Adresse],[Alter],[Hierarchie],[Miete],[Gebäudeplan],[Breite],[Anzahl der Stockwerke im Raum]
Wir haben bestätigt, dass Informationen über Chiyoda Ward und Setagaya Ward von suumo abgerufen werden können.
Ich kratzte und bekam die Eigentumsinformationen von suumo. Es hat viel Spaß gemacht, Dinge zu tun, die nichts mit dem zu tun haben, was ich normalerweise mache. Letztendlich denke ich, dass es mehr Spaß machen wird, wenn wir diese Eigenschaftsinformationen auf einer Karte abbilden und verschiedene Analysen durchführen können, also werde ich es versuchen.
Recommended Posts