Obtenez des informations sur la propriété en grattant avec python

introduction

Quand j'ai voulu déménager dans le futur, je voulais savoir quel type de propriétés il y avait et s'il y avait des bonnes affaires. Comme il est difficile de vérifier à chaque fois manuellement, je voulais obtenir des informations sur la propriété en utilisant le grattage que j'ai fait la dernière fois.

En fin de compte, je voudrais mapper les informations acquises sur une carte, mais je commencerai par acquérir les informations de propriété en premier.

Qu'est-ce que le grattage?

Le grattage consiste simplement à «utiliser un programme pour collecter des informations sur Internet». Le grattage est effectué dans les deux étapes suivantes.

① Obtenir des informations html → ② Extraire les données nécessaires

Tout d'abord, concernant ① En premier lieu, les pages Web sont construites en utilisant un langage appelé html. Cliquez sur la page fléchée dans le coin supérieur droit de Google Chrome Si vous appuyez sur "Autres outils" -> "Outils de développement", une liste de codes sera affichée sur le côté droit de l'écran. C'est le code pour dessiner l'écran et extraire ce code sur votre ordinateur pour le grattage. Et concernant (2), html a une structure imbriquée, et il est distingué pour chaque élément ou étiqueté pour chaque élément. Par conséquent, vous pouvez obtenir les données requises à partir de toutes les données en sélectionnant l'étiquette ou la balise.

Environnement d'exécution

L'environnement d'exécution est le suivant.

la mise en oeuvre

Pour la mise en œuvre, j'ai fait référence à Autres articles. Autres articles Je peux obtenir le résultat du grattage simplement en utilisant celui de l'article, mais cela prend beaucoup de temps, donc je l'ai réécrit un peu.

Code entier

Le code entier est ici.

output.py


from bs4 import BeautifulSoup
import requests
import csv
import time

#URL (veuillez entrer l'URL ici)
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)

Méthode d'exécution / résultat de l'exécution

Du code ci-dessus

#URL (veuillez entrer l'URL ici)
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'

Entrez l'url des informations de propriété de suumo dans la partie de. Exécutez ensuite ceci, et si output.csv est sorti, il réussit.

La sortie doit ressembler à ce qui suit dans output.csv.

output.csv(partie)


Tokyo Metro Hanzomon Line Station Jimbocho 7 étages 16 ans,2 Kanda Jimbocho, Chiyoda-ku, Tokyo,16 ans,7 histoires,6.90 000 yens,Studio,13.04m2,4ème étage
Tokyo Metro Hanzomon Line Station Jimbocho 7 étages 16 ans,2 Kanda Jimbocho, Chiyoda-ku, Tokyo,16 ans,7 histoires,7.70 000 yens,Studio,16.64m2,4ème étage
Maison de fleurs Kudan,4 Kudan Kita, Chiyoda-ku, Tokyo,42 ans,9 histoires,7.50 000 yens,Studio,21.07m2,5ème étage
Villa Royal Sanbancho,Sanbancho, Chiyoda-ku, Tokyo,44 ans,8 étages,8.50 000 yens,Studio,23.16m2,4ème étage
Villa Royal Sanbancho,Sanbancho, Chiyoda-ku, Tokyo,44 ans,8 étages,8.50 000 yens,Studio,23.16m2,4ème étage

Les éléments sont sortis séparés par des virgules et les éléments suivants sont respectivement affichés.

[Nom du bâtiment],[adresse de rue],[Âge],[hiérarchie],[location],[Plan d'étage],[Largeur],[Nombre d'étages dans la chambre]

Nous avons confirmé que les informations sur Chiyoda Ward et Setagaya Ward peuvent être récupérées à partir de suumo.

Résumé

J'ai gratté et obtenu les informations sur la propriété de suumo. C'était très amusant de faire des choses qui n'avaient rien à voir avec ce que je fais habituellement. En fin de compte, je pense que ce sera plus amusant si nous pouvons cartographier ces informations de propriété sur une carte et effectuer diverses analyses, donc je vais l'essayer.

Recommended Posts

Obtenez des informations sur la propriété en grattant avec python
Obtenez des informations météorologiques avec Python et le grattage
Obtenez des informations sur l'alambic avec Python
Obtenez les tendances Qiita avec le scraping Python
Grattage avec Python
Grattage avec Python
[Python] Obtenez des informations sur le package Python avec l'API PyPI
Grattage en Python (préparation)
Essayez de gratter avec Python.
Grattage avec Python + PhantomJS
Obtenez date avec python
Grattage avec du sélénium [Python]
Scraping avec Python + PyQuery
Scraping RSS avec Python
Obtenez des informations sur le processeur de Raspberry Pi avec Python
Obtenez des informations sur les matchs de course de bateaux avec le web scraping
Script Python pour obtenir des informations de note avec REAPER
Obtenez le code du pays avec python
J'ai essayé de gratter avec Python
Web scraping avec python + JupyterLab
Grattage au sélénium en Python
Grattage avec Selenium + Python Partie 1
Obtenez la chronologie Twitter avec Python
Grattage avec chromedriver en python
Grattage festif avec Python, scrapy
Obtenez des données Youtube avec python
Obtenir des informations avec l'API Zabbix
Grattage avec du sélénium en Python
Grattage avec Tor en Python
Les débutants en Python sont bloqués dans leur premier scraping Web
Obtenir l'ID de thread avec python
Scraping prévisions météorologiques avec python
Grattage avec Selenium + Python Partie 2
Commencez avec Python! ~ ② Grammaire ~
[Python] Obtenez des informations sur les utilisateurs et des articles sur l'API de Qiita
J'ai essayé de gratter avec du python
Obtenez des stocks avec Python
Web scraping débutant avec python
Obtenir le répertoire personnel avec python
Obtenir un événement de clavier avec python
[Python x Zapier] Obtenez des informations d'alerte et notifiez avec Slack
Essayez Juniper JUNOS PyEz (bibliothèque python) Note 2 ~ Obtenez des informations avec PyEz ~
Essayez de gratter avec Python + Beautiful Soup
Obtenez des informations sur les fichiers vidéo avec ffmpeg-python
Commencez avec Python! ~ ① Construction de l'environnement ~
Obtenez le lien de téléchargement Splunk en grattant
Lien pour commencer avec python
Scraping avec Node, Ruby et Python
Obtenez des avis avec l'API googlemap de python
Scraping avec Selenium en Python (Basic)
Grattage avec Python, Selenium et Chromedriver
Web scraping avec Python Première étape
J'ai essayé webScraping avec python.
Grattage avec Python et belle soupe
Obtenez la météo avec les requêtes Python
Obtenez une capture d'écran Web avec python
Obtenez la météo avec les requêtes Python 2
[Python] Obtenez des données économiques avec DataReader
Comment démarrer avec Python