@Evgin555

Как спарсить информацию с сайта, если есть пагинация?

Как можно доработать данный скрипт? Проблема в том, что парсится только одна страница. Как можно перейти на следующую страницу и там тоже сохранить тел.?
from selenium import webdriver
from time import sleep
from PIL import Image
from pytesseract import image_to_string
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
class Bot:
    def __init__(self):
        self.driver = webdriver.Firefox()
        self.navigate()
        wait = WebDriverWait(self.driver, 10)

    def take_screenshot(self):
        self.driver.save_screenshot('avito_screenshot.png')

    def tel_recon(self):
        image = Image.open('tel.png')
        print(image_to_string(image))

        f = open('number.txt', 'a')
        f.write(image_to_string(image)+ '\n')
        f.close()

        def crop(self, location, size):
        image = Image.open('avito_screenshot.png')
        x = location['x']
        y = location['y']
        width = size['width']
        height = size['height']

        image.crop((x, y, x+width, y+height)).save('tel.png')
        self.tel_recon()

        def navigate(self):
        self.driver.get('https://www.avito.ru/volgogradskaya_oblast_volzhskiy/avtomobili/gaz_gazel_2747_2007_1903589701')

        button = self.driver.find_element_by_xpath('//a[@class="button item-phone-button js-item-phone-button button-origin contactBar_greenColor button-origin_full-width button-origin_large-extra item-phone-button_hide-phone item-phone-button_card js-item-phone-button_card contactBar_height"]')
        button.click()

        sleep(15)

        self.take_screenshot()

        image = self.driver.find_element_by_xpath('//div[@class="item-phone-big-number js-item-phone-big-number"]//*')
        location = image.location   # dict {'x': 2343, 'y': 23423}
        size = image.size           # dict {'width': 234, 'height': 234}

        self.crop(location, size)           

def main():
    b = Bot()

if __name__ == '__main__':
    main()

Пробовал явное ожидание, wait, циклы.
  • Вопрос задан
  • 435 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Sedmi
Как вариант собрать список ссылок для обхода в файл и через перебор строк запускать парсинг.
with open('urls.txt', 'r') as f:
for i in f:
....
self.driver.get(str(i))
...
Ответ написан
Ваш ответ на вопрос

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

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