@OldSpice

Как подгружать данные на сайте,если при прокрутке упирается в «Показать ещё»?

Нужно собрать данные всех людей из поиска в одноклассника.
Код работает до тех пор, пока не появляется кнопка "Показать ещё"
Не получается пройти дальше этого места, для загрузки остальных людей. Как можно решить эту проблему?

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from bs4 import BeautifulSoup

driver = webdriver.Chrome("D:\chromedriver")
driver.get('https://www.ok.ru/dk?st.cmd=anonymMain')

def test_01():
  field_email = driver.find_element_by_id('field_email')
  field_email.send_keys('логин')
  field_password = driver.find_element_by_id('field_password')
  field_password.send_keys('пароль')

  p = driver.find_element_by_class_name('mt-5x')
  p.click()

  driver.get('https://ok.ru/search?st.mode=Users&st.grmode=Groups&st.posted=set&st.query=' + 'Петров')

  SCROLL_PAUSE_TIME = 3
  last_height = driver.execute_script("return document.body.scrollHeight")
  while True:
      # Scroll down to bottom
      driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

      # Wait to load page
      time.sleep(SCROLL_PAUSE_TIME)

      # Calculate new scroll height and compare with last scroll height
      new_height = driver.execute_script("return document.body.scrollHeight")
      if new_height == last_height:
          break
      last_height = new_height

   time.sleep(2)
   soup = BeautifulSoup(driver.page_source, "lxml")
   divs = soup.findAll("div", {'class': 'gs_result_i_w'})
  
   divs_number = soup.findAll("div", {'class': 'portlet_h_name_t'})
   print(divs_number)
  
   for div in divs:
       div_title = div.find("div", {'class': 'ellip'})
       link_text = div_title.find('').text
       print('ФИО : ' + link_text)

test_01()
  • Вопрос задан
  • 844 просмотра
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
ищи код промотки вниз

а, ну, ты его нашел

в чем проблема тогда? на каждом шаге парсишь body, не в конце
Ответ написан
@tabbols95
Недопрограммист
Можно имитировать клик нажатия кнопки через обращение к JS
driver.execute_script('return document.getElementsByClassName("button").click()')
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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