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.
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.
L'environnement d'exécution est le suivant.
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.
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)
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.
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