@sanches303

Почему парсер считывает всегда рандомное число обьявлений у пользователя, и как сделать так чтобы он мог нормально их считыывать?

Есть парсер. Работает исправно до момента когда нужно считывать кол-во обьявлений у пользователя.
вот код:
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from bs4 import BeautifulSoup
link = 'https://www.list.am/ru/'
driver = webdriver.Chrome()
driver.get(link)
soup = BeautifulSoup(driver.page_source, features="lxml")
time.sleep(1)
search_text = driver.find_element(By.ID, 'idSearchBox')
search_text.send_keys('пылесос')
time.sleep(1)
search = driver.find_element(By.XPATH, '//*[@id="idSearchF"]/button')
search.click()
time.sleep(2)
secpage = driver.find_element(By.XPATH, '//*[@id="contentr"]/div[3]/div[2]/span/a[1]')
secpage.click()
time.sleep(2)
for i in range(57, 58):
    product = driver.find_element(By.XPATH, f'//*[@id="contentr"]/div[3]/a[{i}]')
    product.click()
    print(driver.window_handles)
    driver.switch_to.window(driver.window_handles[1])
    time.sleep(2)
    user = driver.find_element(By.XPATH, '//*[@id="uinfo"]/div[1]/a')
    user.click()
    print(driver.window_handles)
    time.sleep(3)
    ords = soup.find_all('div', class_='at')
    time.sleep(1)
    print(len(ords))

В чем ошибка, и как сделать так чтобы считывало все нормально?
  • Вопрос задан
  • 60 просмотров
Решения вопроса 1
Mike_Ro
@Mike_Ro
Python, JS, WordPress, SEO, Bots, Adversting
time.sleep(1)

Рекомендую использовать WebDriverWait.
soup = BeautifulSoup(driver.page_source, features="lxml")

Вы создаете объект soup вне переходов по страницам, соответственно у Вас в soup лежит html начальной страницы. Попробуйте использовать soup в цикле:
for i in range(57, 58):
    # ...
    soup = BeautifulSoup(driver.page_source, features="lxml")
    # ...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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