آزمون عملی برای ارزیابی مهارتهای شما در توسعه Python، اسکرپینگ وب، رفع اشکال و ریفکتورینگ کد
هدف این بخش، ساخت یک سرویس کوچک است که با دریافت دامنه وبسایت و کلیدواژه جستجو
(مثلاً adidas.com و sport shoes)، رتبه (Rank) آن دامنه را در نتایج جستجوی گوگل پیدا کند
و خروجی قابل استفاده برای سیستمهای دیگر ارائه دهد.
null) برگردانیدwww. و m.)POST /api/rank{
"domain": "adidas.com",
"keyword": "sport shoes",
"max_results": 100
}
{
"domain": "adidas.com",
"keyword": "sport shoes",
"rank": 7,
"checked_results": 100,
"found_url": "https://www.adidas.com/...",
"status": "ok"
}
"rank": null و یک status مشخص برگردانیدکد زیر یک اسکرپر ساده برای جمعآوری اطلاعات محصولات از یک فروشگاه آنلاین است. این کد دارای چندین مشکل و بخشهای قابل بهبود است.
import requests
from bs4 import BeautifulSoup
import time
def get_products(url):
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
products = []
items = soup.find_all('div', class_='product-item')
for item in items:
name = item.find('h3').text
price = item.find('span', class_='price').text
price = price.replace('$', '')
products.append({'name': name, 'price': price})
return products
def scrape_all_pages():
base_url = 'https://example-shop.com/products?page='
all_products = []
for page in range(1, 100):
url = base_url + str(page)
products = get_products(url)
all_products.extend(products)
time.sleep(0.1)
return all_products
products = scrape_all_pages()
print(products)
project/
├── README.md
├── requirements.txt
├── config.py
├── scraper/
│ ├── __init__.py
│ ├── base_scraper.py
│ ├── product_scraper.py
│ └── utils.py
├── storage/
│ ├── __init__.py
│ ├── json_handler.py
│ └── csv_handler.py
├── tests/
│ ├── __init__.py
│ └── test_scraper.py
└── main.py