Abrufen von Eigenschaftsinformationen durch Scraping mit Python

Einführung

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.

Was ist Schaben?

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.

Ausführungsumgebung

Die Ausführungsumgebung ist wie folgt.

Implementierung

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.

Ganzer Code

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)

Ausführungsmethode / Ausführungsergebnis

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.

Zusammenfassung

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

Abrufen von Eigenschaftsinformationen durch Scraping mit Python
Holen Sie sich Wetterinformationen mit Python & Scraping
Holen Sie sich Alembic-Informationen mit Python
Holen Sie sich Qiita-Trends mit Python-Scraping
Scraping mit Python
Scraping mit Python
[Python] Python-Paketinformationen mit der PyPI-API abrufen
Scraping in Python (Vorbereitung)
Versuchen Sie es mit Python.
Scraping mit Python + PhantomJS
Holen Sie sich ein Date mit Python
Schaben mit Selen [Python]
Scraping mit Python + PyQuery
Scraping von RSS mit Python
Holen Sie sich CPU-Informationen von Raspberry Pi mit Python
Holen Sie sich Informationen zu Bootsrennen mit Web Scraping
Python-Skript zum Abrufen von Notizinformationen mit REAPER
Holen Sie sich den Ländercode mit Python
Ich habe versucht, mit Python zu kratzen
Web Scraping mit Python + JupyterLab
Schaben mit Selen in Python
Schaben mit Selen + Python Teil 1
Holen Sie sich Twitter-Timeline mit Python
Schaben mit Chromedriver in Python
Festliches Scraping mit Python, Scrapy
Holen Sie sich Youtube-Daten mit Python
Informationen erhalten Sie mit zabbix api
Scraping mit Selen in Python
Scraping mit Tor in Python
Python-Anfänger bleiben beim ersten Web-Scraping stecken
Holen Sie sich die Thread-ID mit Python
Kratzwettervorhersage mit Python
Schaben mit Selen + Python Teil 2
Beginnen Sie mit Python! ~ ② Grammatik ~
[Python] Mit der API von Qiita erhalten Sie Benutzer- und Artikelinformationen
Ich habe versucht, mit Python zu kratzen
Holen Sie sich Lager mit Python
Web Scraping Anfänger mit Python
Holen Sie sich das Home-Verzeichnis mit Python
Holen Sie sich Tastaturereignis mit Python
[Python x Zapier] Erhalten Sie Warninformationen und benachrichtigen Sie mit Slack
Probieren Sie Juniper JUNOS PyEz (Python-Bibliothek) aus. Hinweis 2 ~ Informationen mit PyEz ~ abrufen ~
Versuchen Sie es mit Python + Beautiful Soup
Holen Sie sich Informationen zu Videodateien mit ffmpeg-python
Beginnen Sie mit Python! ~ ① Umweltbau ~
Holen Sie sich Splunk Download-Link durch Scraping
Link, um mit Python zu beginnen
Scraping mit Node, Ruby und Python
Holen Sie sich Bewertungen mit Python Googlemap API
Scraping mit Selen in Python (Basic)
Scraping mit Python, Selen und Chromedriver
Web Scraping mit Python Erster Schritt
Ich habe versucht, WebScraping mit Python.
Kratzen mit Python und schöner Suppe
Holen Sie sich das Wetter mit Python-Anfragen
Holen Sie sich Web-Screen-Capture mit Python
Holen Sie sich das Wetter mit Python-Anfragen 2
[Python] Mit DataReader Wirtschaftsdaten abrufen
Erste Schritte mit Python