Craigslist ist immer noch eine wichtige Plattform für den Zugriff auf spezifische Kleinanzeigen in der aktuellen digitalen Szene. Die Verwendung von Python zur Optimierung der Extraktion von Details aus den Anzeigen erweist sich als sehr hilfreich. Produktive Web Scraping Operationen werden durch die Anpassungsfähigkeit und die starken Bibliotheken in Python wie Requests oder BeautifulSoup ermöglicht. Dieser Leitfaden befasst sich mit dem Craigslist-Scraping mit Python und beleuchtet die Verwendung von BeautifulSoup und Requests für die Extraktion von Inhalten sowie die Proxy-Rotation, um die Anti-Bot-Abwehr effektiv zu umgehen.
Als Nächstes werden wir den Scraping-Prozess Schritt für Schritt durchgehen, beginnend mit dem Senden von HTTP-Anfragen und dem Extrahieren bestimmter Seitenelemente bis hin zum Speichern der Daten im gewünschten Format.
Sie müssen die erforderlichen Bibliotheken installieren:
pip install beautifulsoup4
pip install requests
Verwenden Sie die requests-Bibliothek, um HTTP-GET-Anfragen an Craigslist-Seiten zu senden.
import requests
# Liste der Craigslist-URLs zum Scrapen
urls = [
"link",
"link"
]
for url in urls:
# Senden Sie eine GET-Anfrage an die URL
response = requests.get(url)
# Prüfen, ob die Anfrage erfolgreich war (Statuscode 200)
if response.status_code == 200:
# HTML-Inhalt aus der Antwort extrahieren
html_content = response.text
else:
# Wenn die Anfrage fehlgeschlagen ist, wird eine Fehlermeldung mit dem Statuscode
print(f"Failed to retrieve {url}. Status code: {response.status_code}")
Verwenden Sie BeautifulSoup zum Parsen von HTML-Inhalten und zum Navigieren durch die abgerufenen Inhalte.
from bs4 import BeautifulSoup
# Iterieren Sie durch jede URL in der Liste
for url in urls:
# Senden Sie eine GET-Anfrage an die URL
response = requests.get(url)
# Prüfen, ob die Anfrage erfolgreich war (Statuscode 200)
if response.status_code == 200:
# HTML-Inhalt aus der Antwort extrahieren
html_content = response.text
# Parsen des HTML-Inhalts mit BeautifulSoup
soup = BeautifulSoup(html_content, 'html.parser')
else:
# Wenn die Anfrage fehlgeschlagen ist, drucken Sie eine Fehlermeldung mit dem Statuscode
print(f"Failed to retrieve {url}. Status code: {response.status_code}")
Extrahieren von Daten wie Artikeltitel und Preise aus Craigslist-Auflistungen mit BeautifulSoup-Methoden.
from bs4 import BeautifulSoup
# Iterieren Sie durch jede URL in der Liste
for url in urls:
# Senden Sie eine GET-Anfrage an die URL
response = requests.get(url)
# Prüfen, ob die Anfrage erfolgreich war (Statuscode 200)
if response.status_code == 200:
# HTML-Inhalt aus der Antwort extrahieren
html_content = response.text
# Parsen des HTML-Inhalts mit BeautifulSoup
soup = BeautifulSoup(html_content, 'html.parser')
# Extrahieren bestimmter Datenpunkte
# Suchen Sie den Titel des Angebots
title = soup.find('span', id='titletextonly').text.strip()
# Finden Sie den Preis des Angebots
price = soup.find('span', class_='price').text.strip()
# Suchen Sie die Beschreibung des Angebots (kann mehrere Absätze enthalten)
description = soup.find('section', id='postingbody').find_all(text=True, recursive=False)
# Extrahierte Daten drucken (zu Demonstrationszwecken)
print(f"Title: {title}")
print(f"Price: {price}")
print(f"Description: {description}")
else:
# Wenn die Anfrage fehlschlägt, drucken Sie eine Fehlermeldung mit dem Statuscode
print(f"Failed to retrieve {url}. Status code: {response.status_code}")
Titel:
Preis:
Beschreibung:
Sobald die Daten extrahiert sind, können Sie sie in einer CSV-Datei speichern, um sie weiter zu analysieren oder in andere Tools zu integrieren.
import csv
# Definieren Sie den Pfad zur CSV-Datei und die Feldnamen
csv_file = 'craigslist_data.csv'
fieldnames = ['Title', 'Price', 'Description']
# Daten in eine CSV-Datei schreiben
try:
# Öffnen Sie die CSV-Datei im Schreibmodus mit UTF-8-Kodierung
with open(csv_file, mode='w', newline='', encoding='utf-8') as file:
# Erstellen eines CSV-DictWriter-Objekts mit den angegebenen Feldnamen
writer = csv.DictWriter(file, fieldnames=fieldnames)
# Schreiben Sie die Kopfzeile in die CSV-Datei
writer.writeheader()
# Iterieren Sie jedes Element in der Liste scraped_data
for item in scraped_data:
# Jedes Element als eine Zeile in die CSV-Datei schreiben
writer.writerow(item)
# Drucken einer Erfolgsmeldung nach dem Schreiben von Daten in die CSV-Datei
print(f"Data saved to {csv_file}")
except IOError:
# Ausgabe einer Fehlermeldung, wenn beim Schreiben in die CSV-Datei ein IOError auftritt
print(f"Error occurred while writing data to {csv_file}")
Craigslist kann Maßnahmen ergreifen, um Scraping zu verhindern, wie z. B. IP-Sperren oder CAPTCHA-Herausforderungen. Um diese Probleme zu entschärfen, sollten Sie die Verwendung von Proxys und rotierenden Benutzeragenten in Betracht ziehen.
Proxys verwenden:
Dieses Beispiel demonstriert die Verwendung eines Proxys mit IP-Adressberechtigung.
proxies = {
'http': 'http://your_proxy_ip:your_proxy_port',
'https': 'https://your_proxy_ip:your_proxy_port'
}
response = requests.get(url, proxies=proxies)
Benutzer-Agent Rotation:
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',
# Bei Bedarf weitere User Agents hinzufügen
]
headers = {
'User-Agent': random.choice(user_agents)
}
response = requests.get(url, headers=headers)
Dieses vollständige Python-Skript zeigt, wie man verschiedene Komponenten integriert, um einen effizienten Craigslist-Scraper zu erstellen, der Daten aus mehreren URLs extrahiert, analysiert und abruft.
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()
# Liste der Craigslist-URLs zum Scrapen
urls = [
"link",
"link"
]
# Benutzeragenten und Proxys
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'},
]
# Liste zum Speichern der ausgewerteten Daten
scraped_data = []
# Schleife durch jede URL in der Liste
for url in urls:
# Wechsel des Benutzer-Agenten für jede Anfrage, um eine Entdeckung zu vermeiden
headers = {
'User-Agent': random.choice(user_agents)
}
# Verwenden Sie für jede Anfrage einen anderen Proxy, um IP-Sperren zu vermeiden.
proxy = random.choice(proxies)
try:
# GET-Anfrage an die Craigslist-URL mit Headern und Proxy senden
response = requests.get(url, headers=headers, proxies=proxy, timeout=30, verify=False)
# Prüfen, ob die Anfrage erfolgreich war (Statuscode 200)
if response.status_code == 200:
# Parsen des HTML-Inhalts der Antwort
html_content = response.text
soup = BeautifulSoup(html_content, 'html.parser')
# Daten aus dem geparsten HTML extrahieren
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') # Extracting description
# Ausgelesene Daten in Form eines Wörterbuchs an die Liste anhängen
scraped_data.append({'Title': title, 'Price': price, 'Description': description})
print(f"Data scraped for {url}")
else:
# Fehlermeldung ausgeben, wenn die Anfrage fehlschlägt
print(f"Failed to retrieve {url}. Status code: {response.status_code}")
except Exception as e:
# Ausgabe einer Ausnahmemeldung, wenn beim Scrapen ein Fehler auftritt
print(f"Exception occurred while scraping {url}: {str(e)}")
# Einrichtung einer CSV-Datei zur Speicherung der gescrapten Daten
csv_file = 'craigslist_data.csv'
fieldnames = ['Title', 'Price', 'Description']
# Schreiben von ausgewerteten Daten in eine CSV-Datei
try:
with open(csv_file, mode='w', newline='', encoding='utf-8') as file:
writer = csv.DictWriter(file, fieldnames=fieldnames)
# Kopfzeile in die CSV-Datei schreiben
writer.writeheader()
# Iterieren Sie die Liste scraped_data und schreiben Sie jedes Element in die CSV-Datei
for item in scraped_data:
writer.writerow(item)
# Erfolgsmeldung ausgeben, wenn die Daten erfolgreich gespeichert wurden
print(f"Data saved to {csv_file}")
except IOError:
# Fehlermeldung ausgeben, wenn beim Schreiben in die CSV-Datei ein IOError auftritt
print(f"Error occurred while writing data to {csv_file}")
Craigslist ist wichtig, weil es einen Ort bietet, an dem wir Kleinanzeigen finden können, die uns nützliche Informationen für die Untersuchung von Märkten, die Suche nach Leads und anderes liefern. Craigslist-Web-Scraping wird durch Python und Bibliotheken wie BeautifulSoup und Request erleichtert. Die wichtigsten in diesem Tutorial besprochenen Taktiken sind der Umgang mit dynamischen Inhalten und rotierenden Proxys. Durch den verantwortungsvollen Einsatz von Python können Sie aus Craigslist-Angeboten verwertbare Erkenntnisse gewinnen, die eine fundierte Entscheidungsfindung in verschiedenen Bereichen unterstützen.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
Bemerkungen: 0