Craigslist masih merupakan platform yang signifikan untuk mengakses iklan rahasia tertentu dalam adegan digital saat ini. Menggunakan Python dalam merampingkan detail ekstraksi dari iklan terbukti sangat membantu. Operasi pengikisan web yang produktif diaktifkan oleh kemampuan beradaptasi dan perpustakaan yang kuat di Python seperti permintaan atau cantik. Panduan ini menggali ke ranah craigslist mengikis dengan Python, menyoroti pemanfaatan indah dan permintaan ekstraksi konten, di samping rotasi proxy untuk menavigasi pertahanan anti-bot secara efektif.
Selanjutnya, kita akan melalui proses pengikisan langkah demi langkah, dimulai dengan mengirim permintaan HTTP dan mengekstraksi elemen halaman tertentu, dan menyelesaikan dengan menyimpan data dalam format yang diperlukan.
Anda harus menginstal pustaka yang diperlukan:
pip install beautifulsoup4
pip install requests
Gunakan Perpustakaan Permintaan untuk mengirim permintaan HTTP Get ke halaman daftar craigslist.
import requests
# Daftar URL Craigslist untuk Mengikis
urls = [
"link",
"link"
]
for url in urls:
# Kirim permintaan mendapatkan ke URL
response = requests.get(url)
# Periksa apakah permintaan berhasil (kode status 200)
if response.status_code == 200:
# Ekstrak konten HTML dari respons
html_content = response.text
else:
# Jika permintaan gagal, cetak pesan kesalahan dengan kode status
print(f"Failed to retrieve {url}. Status code: {response.status_code}")
Gunakan Beautifulsoup untuk parsing html dan menavigasi melalui konten yang diambil.
from bs4 import BeautifulSoup
# Iterasi melalui setiap URL dalam daftar
for url in urls:
# Kirim permintaan mendapatkan ke URL
response = requests.get(url)
# Periksa apakah permintaan berhasil (kode status 200)
if response.status_code == 200:
# Ekstrak konten HTML dari respons
html_content = response.text
# Parse konten html menggunakan cantik
soup = BeautifulSoup(html_content, 'html.parser')
else:
# Jika permintaan gagal, cetak pesan kesalahan dengan kode status
print(f"Failed to retrieve {url}. Status code: {response.status_code}")
Ekstrak data seperti judul item dan harga dari daftar craigslist menggunakan metode indah.
from bs4 import BeautifulSoup
# Iterasi melalui setiap URL dalam daftar
for url in urls:
# Kirim permintaan mendapatkan ke URL
response = requests.get(url)
# Periksa apakah permintaan berhasil (kode status 200)
if response.status_code == 200:
# Ekstrak konten HTML dari respons
html_content = response.text
# Parse konten html menggunakan cantik
soup = BeautifulSoup(html_content, 'html.parser')
# Mengekstraksi titik data tertentu
# Temukan judul daftar
title = soup.find('span', id='titletextonly').text.strip()
# Temukan harga daftar
price = soup.find('span', class_='price').text.strip()
# Temukan deskripsi daftar (dapat berisi beberapa paragraf)
description = soup.find('section', id='postingbody').find_all(text=True, recursive=False)
# Cetak data yang diekstraksi (untuk tujuan demonstrasi)
print(f"Title: {title}")
print(f"Price: {price}")
print(f"Description: {description}")
else:
#Jika permintaan gagal, cetak pesan kesalahan dengan kode status
print(f"Failed to retrieve {url}. Status code: {response.status_code}")
Judul:
Harga:
Keterangan:
Setelah data diekstraksi, simpan ke file CSV untuk analisis atau integrasi lebih lanjut dengan alat lain.
import csv
# Tentukan jalur file CSV dan nama bidang
csv_file = 'craigslist_data.csv'
fieldnames = ['Title', 'Price', 'Description']
# Menulis data ke file CSV
try:
# Buka file CSV dalam mode tulis dengan pengkodean UTF-8
with open(csv_file, mode='w', newline='', encoding='utf-8') as file:
# Buat objek Diktwriter CSV dengan FieldNames yang ditentukan
writer = csv.DictWriter(file, fieldnames=fieldnames)
# Tulis baris header di file CSV
writer.writeheader()
# Iterasi melalui setiap item dalam daftar scraped_data
for item in scraped_data:
# Tulis setiap item sebagai baris dalam file CSV
writer.writerow(item)
# Cetak Pesan Sukses Setelah Menulis Data ke File CSV
print(f"Data saved to {csv_file}")
except IOError:
# Cetak pesan kesalahan jika IoError terjadi saat menulis ke file CSV
print(f"Error occurred while writing data to {csv_file}")
Craigslist dapat menerapkan langkah -langkah untuk mencegah pengikisan, seperti pemblokiran IP atau tantangan CAPTCHA. Untuk mengurangi masalah ini, pertimbangkan untuk menggunakan proxy dan berputar agen pengguna.
Menggunakan proxy:
Contoh ini menunjukkan penggunaan proxy dengan otorisasi alamat IP.
proxies = {
'http': 'http://your_proxy_ip:your_proxy_port',
'https': 'https://your_proxy_ip:your_proxy_port'
}
response = requests.get(url, proxies=proxies)
Rotasi agen pengguna:
import random
user_agents = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
# Tambahkan lebih banyak agen pengguna sesuai kebutuhan
]
headers = {
'User-Agent': random.choice(user_agents)
}
response = requests.get(url, headers=headers)
Skrip python lengkap ini menunjukkan cara mengintegrasikan komponen yang berbeda untuk membangun scraper craigslist yang efisien yang mengekstrak, parse, dan mengambil data dari beberapa URL.
import requests
import urllib3
from bs4 import BeautifulSoup
import csv
import random
import ssl
ssl._create_default_https_context = ssl._create_stdlib_context
urllib3.disable_warnings()
# Daftar URL Craigslist untuk Mengikis
urls = [
"link",
"link"
]
# Agen dan proksi pengguna
user_agents = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
]
proxies = [
{'http': 'http://your_proxy_ip1:your_proxy_port1', 'https': 'https://your_proxy_ip1:your_proxy_port1'},
{'http': 'http://your_proxy_ip2:your_proxy_port2', 'https': 'https://your_proxy_ip2:your_proxy_port2'},
]
# Daftar untuk menyimpan data yang tergores
scraped_data = []
# Lingkari setiap URL dalam daftar
for url in urls:
# Putar agen pengguna untuk setiap permintaan untuk menghindari deteksi
headers = {
'User-Agent': random.choice(user_agents)
}
# Gunakan proxy yang berbeda untuk setiap permintaan untuk menghindari pemblokiran IP
proxy = random.choice(proxies)
try:
# Kirimkan permintaan ke URL Craigslist dengan header dan proxy
response = requests.get(url, headers=headers, proxies=proxy, timeout=30, verify=False)
# Periksa apakah permintaan berhasil (kode status 200)
if response.status_code == 200:
# Parse konten html dari respons
html_content = response.text
soup = BeautifulSoup(html_content, 'html.parser')
# Ekstrak data dari HTML yang diuraikan
title = soup.find('span', id='titletextonly').text.strip()
price = soup.find('span', class_='price').text.strip()
description = soup.find('section', id='postingbody').get_text(strip=True, separator='\n') # Mengekstraksi deskripsi
# Tambahkan data tergores sebagai kamus ke daftar
scraped_data.append({'Title': title, 'Price': price, 'Description': description})
print(f"Data scraped for {url}")
else:
# Cetak pesan kesalahan jika permintaan gagal
print(f"Failed to retrieve {url}. Status code: {response.status_code}")
except Exception as e:
# Cetak pesan pengecualian jika terjadi kesalahan selama pengikisan
print(f"Exception occurred while scraping {url}: {str(e)}")
# Pengaturan File CSV Untuk Menyimpan Data Tergores
csv_file = 'craigslist_data.csv'
fieldnames = ['Title', 'Price', 'Description']
# Menulis data yang tergores ke file CSV
try:
with open(csv_file, mode='w', newline='', encoding='utf-8') as file:
writer = csv.DictWriter(file, fieldnames=fieldnames)
# Tulis baris header di file csv
writer.writeheader()
# Iterasi melalui daftar scraped_data dan tulis setiap item ke file CSV
for item in scraped_data:
writer.writerow(item)
# Cetak Pesan Sukses Jika data disimpan dengan sukses
print(f"Data saved to {csv_file}")
except IOError:
# Cetak Pesan Kesalahan Jika ada IoError saat menulis ke file CSV
print(f"Error occurred while writing data to {csv_file}")
Craigslist penting karena menyediakan tempat di mana kami dapat menemukan iklan rahasia yang memberi kami informasi yang berguna untuk memeriksa pasar, menemukan arahan di antara yang lain. Pengikisan web Craigslist menjadi mudah oleh Python menggunakan perpustakaan seperti cantik dan permintaan. Taktik utama yang dibahas dalam tutorial ini adalah menangani konten dinamis dan proxy berputar. Dengan memanfaatkan Python secara bertanggung jawab, Anda dapat mengekstraksi wawasan yang dapat ditindaklanjuti dari daftar Craigslist, mendukung pengambilan keputusan berdasarkan informasi di berbagai domain.
Komentar: 0