Beranda BlogPengikisan web Cara Mencari Listing Properti Homes.com (Panduan Lengkap dan Kode)

Cara Mencari Listing Properti Homes.com (Panduan Lengkap dan Kode)

oleh Kadek

Langkah 4: Mengirim permintaan melalui ScraperAPI

Tantangan terbesar saat melakukan scraping Homes.com adalah tidak diblokir oleh mekanisme anti-scraping.

Untuk memastikan pengikisan yang lancar dan efisien, ScraperAPI akan melakukan hal berikut:

  • Putar IP dan header kami jika perlu
  • Tangani CAPTCHA
  • Tiru lalu lintas nyata menggunakan analisis statistik dan ML

Dan banyak lagi.

Fungsi lain yang akan kita gunakan adalah fungsi penargetan geografis, yang dapat kita manfaatkan dengan menentukannya ‘country_code’ Parameter dalam payload kami. Hal ini memastikan bahwa data kami bersifat spesifik wilayah dan akurat.

Cara mengaturnya:

  1. Bangun milikmu payload dengan menyertakan kunci API, URL yang dibuat untuk halaman saat ini, dan kode negara. Ini memberi tahu ScraperAPI apa yang harus diambil dan dari mana.


	payload = {
		'api_key': API_KEY,
		'country_code': 'us',
		'url': url
	}

  1. Kirim ini payload ke ScraperAPI. Langkah ini seperti meminta ScraperAPI untuk mengunjungi Homes.com atas nama kami, namun dengan manfaat tambahan berupa penargetan geografis yang memastikan kami fokus pada properti Los Angeles seperti yang dilakukan pengunjung AS.


	response = requests.get('https://api.scraperapi.com', params=payload)

Dengan menggunakan ScraperAPI, kami tidak hanya menghindari potensi masalah scraping, namun juga memastikan bahwa pengumpulan data kami relevan dan tepat sasaran.

Langkah 5: Parsing HTML Homes.com dengan BeautifulSoup

Setelah kami mendapat respons sukses dari ScraperAPI, saatnya mengurai kode HTML.

Setiap kali kita membaca sepuluh halaman, properties_list mengakses entri di halaman ini. Kami terus menambahkan ini ke daftar properti utama kami. Dengan cara ini, di akhir perulangan kita, properties memiliki semua entri dari setiap halaman, memberi kita gambaran lengkap.


	if response.status_code == 200:
    soup = BeautifulSoup(response.content, 'html.parser')
    properties_list = soup.find_all('div', attrs={'class': 'for-rent-content-container'})
    properties += propertites_list 

Langkah 6: Ekspor properti Homes.com ke file CSV

Sekarang kita telah berhasil mengumpulkan listingan real estat yang kita inginkan, sekarang saatnya mengaturnya ke dalam file CSV. Langkah ini memastikan bahwa informasi properti mudah diakses untuk analisis atau penggunaan aplikasi.

Untuk memulai, mari kita buka satu 'properties.csv' File untuk menulis. Kami melakukan ini dengan Python csv.writeryang membantu kami membuat file CSV terstruktur untuk menyimpan data sisa kami.


	with open('properties.csv', 'w', newline='') as f:
    writer = csv.writer(f)

Penggunaan csv.writermari kita atur file dan tentukan judul kolomnya 'title', 'address'Dan
'price'. Ini mempersiapkan file kami untuk menyimpan informasi properti secara terorganisir.


	writer.writerow(('title', 'address', 'price', 'beds', 'baths', 'description', 'url'))

Dari sini kita mengulang setiap properti dalam daftar properti. Kami menggunakan BeautifulSoup untuk mengambil informasi dari setiap daftar properti dalam loop ini dan memeriksa apakah setiap item ada. Jika tidak, kami menggunakan
'N/A' sebagai pengganti untuk menghindari kesalahan.

Kami sedang mencari paragrafnya <p> Elemen dengan kelas
'property-name' untuk mendapatkan gelar tersebut.


	title_elem = property.find('p', attrs={'class': 'property-name'})
	title = title_elem.text.strip() if title_elem else 'N/A'

Demikian pula, kami mendapatkan alamat a <p> hari bersama kelas 'address'.


	address_elem = property.find('p', attrs={'class': 'address'})
	address = address_elem.text.strip() if address_elem else 'N/A'

Itu <ul> elemen dengan
'detailed-info-container' Kelas tersebut berisi daftar detail, seperti yang kita lihat pada inspeksi HTML. Dari sini kami mengekstrak elemen daftar harga, tempat tidur, dan kamar mandi.


	info_container = property.find('ul', class_='detailed-info-container')
	extra_info = info_container.find_all('li') if info_container else ()
	price = extra_info(0).text.strip() if len(extra_info) > 0 else 'N/A'
	beds = extra_info(1).text.strip() if len(extra_info) > 1 else 'N/A'
	baths = extra_info(2).text.strip() if len(extra_info) > 2 else 'N/A'

Kami mengekstrak deskripsi dari <p> hari bersama kelas 'property-description'.


	description_elem = property.find('p', attrs={'class': 'property-description'})
	description = description_elem.text.strip() if description_elem else 'N/A'

Kami mendapatkan URL dari atribut href dari <a> Tandai dan gantungkan di BASE_URL untuk tautan lengkap.


	url_elem = property.find('a')
	url = BASE_URL + url_elem.get('href') if url_elem else 'N/A'

catatan: Langkah ini penting karena URL yang ditampilkan dalam HTML terfragmentasi. Dengan kata lain, tanpa menambahkan Anda tidak akan mendapatkan URL lengkap BASE_URL ke tautan kutipan.

Memilih atribut href dari tag aMemilih atribut href dari tag a

Setelah kami mengekstrak semua detail yang kami perlukan dari setiap properti, kami menuliskannya sebagai baris baru di file CSV kami. Dengan cara ini, informasi tentang setiap properti disimpan dalam format yang terorganisir dan dapat diakses.


	writer.writerow((title, address, price, beds, baths, description, url))

Langkah 7: Penanganan kesalahan dan sentuhan akhir

Dalam loop kami, kami menggunakan a try-except blok untuk menangkap semua pengecualian selama get() Permintaan ke ScraperAPI. Ini memastikan bahwa skrip kami tidak mogok jika permintaan gagal.


	try:
    response = requests.get('https://api.scraperapi.com', params=payload)
    # Further processing
except requests.RequestException as e:
    print(f"Request failed on page {page}: {e}")

Kami juga memeriksa status respons sebelum menguraikan HTML. Jika kode status tidak ada 200 (Berhasil), kami memberikan pesan kesalahan dan melewatkan penguraian untuk halaman ini.


	if response.status_code == 200:
    # Parse HTML
else:
    print(f"Error on page {page}: Received status code {response.status_code}")

Terakhir, kami menyimpulkan skrip kami dengan pesan terakhir.


	print(f"Scraping completed. Collected data for {len(properties)} properties.")

Dengan langkah terakhir ini, kami tidak hanya mengonfirmasi bahwa kami telah berhasil mengikis Homes.com, namun juga memberikan wawasan singkat tentang jumlah data yang telah kami kikis, sehingga memudahkan peninjauan data tergores dan analisis atau penerapan lebih lanjut untuk melanjutkan.

Ringkasan

Selamat, Anda telah berhasil membuat scraper Homes.com pertama Anda!

Singkatnya, inilah yang Anda pelajari hari ini:

  • Gunakan Python dan BeautifulSoup untuk mengekstrak data real estat

  • Ekspor data properti ke file CSV untuk memudahkan analisis
  • Gunakan ScraperAPI untuk secara efektif mengabaikan tindakan anti-scraping dan memfokuskan scraping kami pada data spesifik wilayah

Scraping Homes.com sangat penting untuk tetap menjadi yang terdepan dalam pasar real estat yang dinamis, baik untuk analisis investasi, riset pasar, atau pengembangan strategi pemasaran yang disesuaikan.

catatan: Penyeleksi dalam artikel ini dipilih karena keakuratannya saat ini dan seharusnya berfungsi dengan baik. Namun, seiring perubahan situs web, disarankan untuk memeriksanya sesekali untuk menghindari kesalahan. Jika Anda melihat ada perubahan, sesuaikan saja skrip Anda sedikit.

Jika Anda memiliki pertanyaan, silakan hubungi tim dukungan kami - kami akan dengan senang hati membantu Anda. Anda juga dapat membaca dokumentasi kami untuk mempelajari lebih lanjut tentang spesifikasi ScraperAPI.

Sampai jumpa lagi, selamat menggores!

Pos terkait

Tinggalkan Komentar