Mises en œuvre pratiques
Scénarios de recherche sur le web dans le monde réel
1. Crawler de recherche académique
import requests
from bs4 import BeautifulSoup
import pandas as pd
def academic_search(keywords, num_results=10):
base_url = "https://scholar.google.com/scholar"
params = {"q": keywords, "hl": "en"}
results = []
response = requests.get(base_url, params=params)
soup = BeautifulSoup(response.text, 'html.parser')
for result in soup.find_all('div', class_='gs_ri')[:num_results]:
title = result.find('h3', class_='gs_rt').text
abstract = result.find('div', class_='gs_rs').text
results.append({
'title': title,
'abstract': abstract
})
return pd.DataFrame(results)
Stratégies de mise en œuvre de la recherche
2. Outil de comparaison de prix
def compare_product_prices(product_name):
search_engines = {
'Amazon': f"https://www.amazon.com/s?k={product_name}",
'eBay': f"https://www.ebay.com/sch/i.html?_nkw={product_name}"
}
price_comparisons = {}
for platform, url in search_engines.items():
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
prices = soup.find_all('span', class_='price')
price_comparisons[platform] = [float(p.text.replace('$', '')) for p in prices[:5]]
return price_comparisons
Visualisation du flux de travail de recherche
graph TD
A[Search Query] --> B[Select Sources]
B --> C[Send Requests]
C --> D[Parse Results]
D --> E[Extract Data]
E --> F[Analyze/Process]
F --> G[Present Findings]
Techniques de recherche avancées
def aggregate_search_results(query):
sources = [
{'name': 'Wikipedia', 'url': f"https://en.wikipedia.org/w/index.php?search={query}"},
{'name': 'News', 'url': f"https://news.google.com/search?q={query}"}
]
aggregated_results = {}
for source in sources:
response = requests.get(source['url'])
soup = BeautifulSoup(response.text, 'html.parser')
results = soup.find_all('div', class_='result')
aggregated_results[source['name']] = [
result.text for result in results[:3]
]
return aggregated_results
Comparaison des mises en œuvre de recherche
Technique |
Complexité |
Cas d'utilisation |
Performance |
Requêtes de base |
Faible |
Recherches simples |
Rapide |
Analyse avec BeautifulSoup |
Moyenne |
Données structurées |
Modérée |
Agrégation multi-sources |
Élevée |
Recherche approfondie |
Plus lente |
Gestion des erreurs et robustesse
def robust_search(query, max_retries=3):
for attempt in range(max_retries):
try:
results = perform_search(query)
return results
except requests.RequestException as e:
print(f"Search attempt {attempt + 1} failed: {e}")
time.sleep(2) ## Wait before retry
return None
Bonnes pratiques pour les développeurs LabEx
- Implémenter une gestion complète des erreurs
- Utiliser une limitation de taux
- Mettre en cache les résultats de recherche
- Respecter les conditions d'utilisation des sites web
En maîtrisant ces mises en œuvre pratiques, les développeurs peuvent créer des solutions de recherche sur le web sophistiquées qui extraient efficacement et éthiquement des informations précieuses.