@Markus-Zeyfert

Как следить за изменениями на сайте?

Есть задача - нужно первым получать свежее объявление на Авито.
Python, как язык, не знаю. Но что-то всё же сумел накидать своими силами.

Остановился вот на чём -- как теперь следить за тем, когда появляется новое объявление? (Речь о секундах, нужно получить данные новоприбывшего объявления за несколько секунд)

В какую сторону копать?
Вот код:
import requests
from bs4 import BeautifulSoup

URL = 'https://www.avito.ru/novosibirsk/kvartiry/prodam-ASgBAgICAUSSA8YQ?cd=1&f=ASgBAQICAUSSA8YQAUCQvg0Ulq41&proprofile=1&s=104'
HEADERS = {'user-agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36', 'accept': '*/*'}
HOST = 'https://www.avito.ru'

def get_html(url, params=None):
    r = requests.get(url, headers=HEADERS, params=params)
    return r

def get_content(html):
    soup = BeautifulSoup(html, 'html.parser')
    item = soup.find('div', class_='item__line')

    aparts = []
    # for item in items:
    M = item.find('span', class_='snippet-link-name').get_text(strip=True).find('м')
    SLASH = item.find('span', class_='snippet-link-name').get_text(strip=True).find('/')
    STREET = item.find('span', class_='item-address__string').get_text(strip=True)
    house = item.find('span', class_='item-address__string').get_text(strip=True).replace('д. ', '').replace('стр. ', '')
    rooms = item.find('span', class_='snippet-link-name').get_text(strip=True)[:1]
    meters = item.find('span', class_='snippet-link-name').get_text(strip=True)

    if rooms == 'К':
        rooms = '1'
        meters = meters[17:M-1]
    else:
        meters = meters[14:M-1]

    if STREET.find('у') == 0:
        street = item.find('span', class_='item-address__string').get_text(strip=True).split(', ')[0].replace('ул. ', '')
    else:
        street = item.find('span', class_='item-address__string').get_text(strip=True).split(', ')[-2].replace(' ул.', '')

    aparts.append({
        'price': item.find('span', class_='snippet-price').get_text(strip=True).replace('  ₽', '').replace(' ', '')[:-3],
        'rooms': rooms,
        'meters': meters,
        'floor': item.find('span', class_='snippet-link-name').get_text(strip=True)[M+4:SLASH],
        'street': street,
        'house': house.split(', ')[-1],
        'link': HOST + item.find('a', class_='snippet-link').get('href'),
    })
    print(aparts)

def parse():
    html = get_html(URL)
    if html.status_code == 200:
        get_content(html.text)
    else:
        print('Error')

parse()
  • Вопрос задан
  • 88 просмотров
Пригласить эксперта
Ответы на вопрос 3
@zexer
Копать в сторону изучения их API.
Ответ написан
Giperoglif
@Giperoglif
у меня есть парсинг любого раздела на пхп, если чуть допилить - в принципе можно запускать хоть раз в секунду, но я даже не знаю как вам помочь - весь код сюда что ли тащить
Ответ написан
sswwssww
@sswwssww
То что вам нужно называется Webhook, но не уверен что Авито они есть.
https://proglib.io/p/vebhuki-kak-poluchat-dannye-b...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы