Spaces:
Runtime error
Runtime error
import requests | |
from bs4 import BeautifulSoup | |
import pandas as pd | |
import numpy as np | |
def get_item_description(item_url): | |
response = requests.get(item_url) | |
soup = BeautifulSoup(response.text, 'html.parser') | |
iframe = soup.find(id='desc_ifr') | |
if iframe: | |
iframe_src = iframe['src'] | |
iframe_response = requests.get(iframe_src) | |
iframe_soup = BeautifulSoup(iframe_response.text, 'html.parser') | |
return iframe_soup.get_text(strip=True) | |
else: | |
return 'No Description' | |
def search_ebay_sold_items(search_query): | |
# Replace spaces in the search query with '+' | |
query = search_query.replace(' ', '+') | |
counter = 0 | |
prices = [] | |
img_urls = [] | |
for pgn in range(2): | |
if (counter == 100): | |
break | |
counter += 1 | |
# eBay URL for sold listings | |
url = f"https://www.ebay.com/sch/i.html?_nkw={query}&_sop=12&LH_Sold=1&LH_Complete=1&rt=nc&LH_ItemCondition=3000&_pgn={pgn}" | |
# Send a request to the eBay URL | |
response = requests.get(url) | |
# Parse the response using BeautifulSoup | |
soup = BeautifulSoup(response.text, 'html.parser') | |
# Find listings - Adjust the selector as needed | |
listings = soup.find_all('li', class_='s-item') | |
# Extract and print details from each listing | |
for item in listings[1:]: | |
price = item.find('span', class_='s-item__price').text if item.find('span', class_='s-item__price') else 'No Price' | |
img_div = item.find('div', class_='s-item__image-wrapper') | |
img_url = img_div.find('img')['src'] if img_div and img_div.find('img') else 'No Image URL' | |
try: | |
prices.append(float(price.replace("$","").replace(",",''))) | |
except: | |
pass | |
img_urls.append(img_url) | |
prices = np.array(prices) | |
stats = min(prices), np.percentile(prices, 25), np.percentile(prices, 50), np.percentile(prices, 75), max(prices) | |
return stats | |