|
import streamlit as st |
|
import requests |
|
from bs4 import BeautifulSoup |
|
from io import BytesIO |
|
|
|
def get_auto_lot_info(query): |
|
url = "https://ru.autoauctionspot.com/salvage-cars-auction/" |
|
payload = { |
|
'lot-type-available-to-bid': '1', |
|
'search-term': query, |
|
} |
|
|
|
try: |
|
response = requests.post(url, data=payload) |
|
response.raise_for_status() |
|
|
|
soup = BeautifulSoup(response.content, 'html.parser') |
|
lot_title = soup.find('h1', class_='slider-name').text.strip() |
|
damage_info = soup.find('div', class_='char-line') |
|
damage_type_primary = damage_info.find('span', class_='char-info-envelope').text.strip() |
|
damage_type_secondary = damage_info.find_all('span', class_='char-info-envelope')[1].text.strip() |
|
|
|
lot_info = f"Лот: {lot_title}\nУщерб: {damage_type_primary}, {damage_type_secondary}\n" |
|
|
|
char_wrap = soup.find_all('div', class_='char-wrap') |
|
for char_box in char_wrap: |
|
char_lines = char_box.find_all('div', class_='char-line') |
|
for char_line in char_lines: |
|
char_name = char_line.find('span', class_='char-name').text.strip() |
|
char_info = char_line.find('span', class_='char-info').text.strip() |
|
lot_info += f"{char_name}: {char_info}\n" |
|
|
|
car_slider = soup.find('div', class_='car-slider') |
|
image_links = [figure.a['href'] for figure in car_slider.find_all('figure')] |
|
|
|
images = [] |
|
for link in image_links: |
|
image_response = requests.get(link) |
|
image_data = BytesIO(image_response.content) |
|
images.append(image_data) |
|
|
|
final_bid_info = soup.find('div', class_='copart-bid_final') |
|
final_bid_title = final_bid_info.find('span', class_='copart-bid-title').text.strip() |
|
final_bid_amount = final_bid_info.find('span', class_='copart-price').text.strip() |
|
final_bid_info = f"{final_bid_title}: {final_bid_amount}" |
|
|
|
return lot_info, images, final_bid_info |
|
|
|
except requests.RequestException as e: |
|
print(f"Ошибка при запросе {url}: {e}") |
|
return None, None, None |
|
except Exception as e: |
|
print(f"Необработанная ошибка в get_auto_lot_info: {e}") |
|
return None, None, None |
|
|
|
def main(): |
|
|
|
st.markdown("[AlfaCross](https://t.me/alfacross_bot)") |
|
|
|
st.title("Auto Lot Info Web App") |
|
query = st.text_input("Введите запрос для поиска лота:") |
|
|
|
if st.button("Получить информацию о лоте"): |
|
lot_info, images, final_bid_info = get_auto_lot_info(query) |
|
|
|
if lot_info and images and final_bid_info: |
|
st.markdown(lot_info) |
|
|
|
for image in images: |
|
st.image(image) |
|
|
|
st.markdown(final_bid_info) |
|
else: |
|
st.markdown("Информация о лоте не найдена.") |
|
|
|
|
|
st.markdown("[Starchik](https://t.me/Starchik_1)") |
|
|
|
|
|
if "query" in st.query_params: |
|
query = st.query_params["query"] |
|
lot_info, images, final_bid_info = get_auto_lot_info(query) |
|
if lot_info and images and final_bid_info: |
|
st.markdown(lot_info) |
|
for image in images: |
|
st.image(image) |
|
st.markdown(final_bid_info) |
|
else: |
|
main() |
|
|