آزمون عملی برای ارزیابی مهارتهای شما در توسعه Python، اسکرپینگ وب، رفع اشکال و ریفکتورینگ کد
کد زیر یک اسکرپر ساده برای جمعآوری اطلاعات محصولات از یک فروشگاه آنلاین است. این کد دارای چندین مشکل و بخشهای قابل بهبود است.
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)
یک اسکرپر کامل برای یکی از وبسایتهای زیر بنویسید (انتخاب با شما):
وبسایت: BBC Persian یا سایت خبری فارسی
دادهها: عنوان، خلاصه، تاریخ، دستهبندی، لینک
وبسایت: Digikala یا سایت مشابه
دادهها: نام، قیمت، تخفیف، امتیاز، تعداد نظرات
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
لطفاً موارد زیر را ارسال کنید:
30%
25%
20%
15%
10%
requests یا httpx برای HTTP requestsBeautifulSoup4 یا lxml برای پارس HTMLselenium یا playwright برای سایتهای دینامیکpandas برای مدیریت دادهpytest برای تستpython-dotenv برای مدیریت تنظیمات