Beginnen wir damit, die zuvor installierten Bibliotheken zu importieren:
from selenium import webdriver
from bs4 import BeautifulSoup
import pandas as pd
Um die Daten von der Website zu extrahieren, müssen wir sie laden, indem wir den WebDriver so konfigurieren, dass er den Chrome-Browser verwendet. Dazu müssen wir lediglich den Pfad angeben, unter dem sich der ChromeDriver befindet. Vergessen Sie nicht, am Ende den Namen der ausführbaren Datei anzugeben – nicht nur den Speicherort!
driver = webdriver.Chrome('your/path/here/chromedriver')
Neben der Anzahl der Schlafzimmer und Badezimmer können wir auch die Adresse, den Preis und, warum nicht, die Größe der Immobilie extrahieren. Je mehr Informationen wir haben, desto einfacher wird es, sich für ein neues Zuhause zu entscheiden.
Deklarieren Sie die Variablen und legen Sie die URL der zu scrapenden Website fest.
prices = []
beds = []
baths = []
sizes = []
addresses = []
driver.get('https://www.realtor.com/realestateandhomes-search/New-York_NY')
Wir müssen die Daten von der Website extrahieren, die sich, wie zuvor erläutert, in den verschachtelten Tags befinden. Suchen Sie die Tags mit den zuvor genannten Attributen und speichern Sie die Daten in den oben deklarierten Variablen. Denken Sie daran, dass wir nur Immobilien mit mindestens zwei Schlafzimmern und einem Badezimmer speichern wollen!
content = driver.page_source
soup = BeautifulSoup(content, features='html.parser')
for element in soup.findAll('li', attrs={'class': 'component_property-card'}):
price = element.find('span', attrs={'data-label': 'pc-price'})
bed = element.find('li', attrs={'data-label': 'pc-meta-beds'})
bath = element.find('li', attrs={'data-label': 'pc-meta-baths'})
size = element.find('li', attrs={'data-label': 'pc-meta-sqft'})
address = element.find('div', attrs={'data-label': 'pc-address'})
if bed and bath:
nr_beds = bed.find('span', attrs={'data-label': 'meta-value'})
nr_baths = bath.find('span', attrs={'data-label': 'meta-value'})
if nr_beds and float(nr_beds.text) >= 2 and nr_baths and float(nr_baths.text) >= 1:
beds.append(nr_beds.text)
baths.append(nr_baths.text)
if price and price.text:
prices.append(price.text)
else:
prices.append('No display data')
if size and size.text:
sizes.append(size.text)
else:
sizes.append('No display data')
if address and address.text:
addresses.append(address.text)
else:
addresses.append('No display data')
Großartig! Wir haben alle Informationen, die wir brauchen, aber wo sollen wir sie speichern? Hier kommt die Pandas-Bibliothek ins Spiel und hilft uns, die Daten in einer CSV-Datei zu strukturieren, die wir später verwenden können.
df = pd.DataFrame({'Address': addresses, 'Price': prices, 'Beds': beds, 'Baths': baths, 'Sizes': sizes})
df.to_csv('listings.csv', index=False, encoding='utf-8')
Wenn wir den Code ausführen, wird eine Datei namens „listings.csv“ erstellt, in der sich unsere wertvollen Daten befinden!
Wir haben es geschafft! Wir haben unser eigenes Web-Scraping-Tool erstellt! Lassen Sie uns nun direkt loslegen und sehen, welche Schritte wir befolgen müssen und welche Codezeilen wir ändern müssen, um ein Scraping-Tool zu verwenden.