Web Scraper продолжает повторять первую страницу вместо нескольких страниц

У меня есть веб-скребок, над которым я пытался работать и совершенствовать. Я уже просил помочь с чем-то еще об этом коде, но на этот раз я еще не нашел ничего полезного для этой проблемы.

Я пытался перестроить код в соответствии с некоторыми учебниками в Интернете, но не так много работает, я на грани того, чтобы начать что-то еще, так как не хочу тратить слишком много времени, если это не сработает.

my_url = "https://www.vuokraovi.com/vuokra-asunnot/Uusimaa"
uClient = uReq(my_url)
page_html = uClient.read()
page_soup = soup(page_html, "html.parser")


lastpage = int(pages[0].findAll("li")[7].text)

pages = list(range(1, int(lastpage) + 1))
for page in pages:
    my_url = "https://www.vuokraovi.com/vuokra-asunnot/Uusimaa?page=%s&pageType=" %(page)
    containers = page_soup.findAll("div", {"class":"list-item-container"})

    print("Processing page: %s" %(page))

    for container in containers:
        try:
            Vuokranantaja = container.findAll("div", {"class":"hidden-xs col-sm-3 col-4"})[0].img["alt"]
        except TypeError:
            Vuokranantaja = container.findAll("div", {"class":"hidden-xs col-sm-3 col-4"})[0].p.strong.text.strip()
        except KeyError:
            Vuokranantaja = container.findAll("div", {"class":"hidden-xs col-sm-3 col-4"})[0].a["href"]


        Huoneistot = container.findAll("li", {"class":"semi-bold"})[1].text

        Talotyyppi = container.findAll("li", {"class":"semi-bold"})[0].text

        Sijainti = container.findAll("div", {"class":"hidden-xs col-sm-4 col-3"})[0].findAll("span", {"class":"address"})[0].text.strip().replace("\r", "").replace("\n", "").replace(" ", "").replace(",", ", ")
        try:
            Vapautuu = container.findAll("div", {"class":"hidden-xs col-sm-4 col-3"})[0].findAll("span", {"class":"showing-lease-container hidden-xs"})[0].li.text
        except AttributeError:
            Vapautuu = "Ei Tiedossa"
        Vuokra = container.findAll("li", {"class":"rent"})[0].text.strip()

        print("Kohdetta Vuokraa:", Vuokranantaja)
        print("Huoneistot:", Huoneistot)
        print("Talotyyppi ja Koko:", Talotyyppi)
        print("Sijainti:", Sijainti)
        print("Vapautuu:", Vapautuu)
        print("Vuokra:", Vuokra)
        print("")

        count += 1
        f.write(Vuokranantaja.replace(",", " |") + "," + Huoneistot.replace(",", " - ") + "," + Talotyyppi.replace(",", ".") + "," + Sijainti.replace(",", " -") + "," + Vapautuu + "," + Vuokra.replace(",", ".") + "\n")

f.close() 

Желаемый результат будет заключаться в том, чтобы код выполнял парсинг, как он это делает, но на нескольких страницах, но он парсит только на первой странице столько раз, сколько lastpage равно.

3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
1
0
80
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ну, в вашем цикле довольно очевидная ошибка, вы не обновляете содержимое переменной page_soup на каждой итерации.

Должно быть:

for page in pages:
    my_url = "https://www.vuokraovi.com/vuokra-asunnot/Uusimaa?page=%s&pageType=" %(page)

    uClient = uReq(my_url)
    page_html = uClient.read()
    page_soup = soup(page_html, "html.parser")

    ...

Теперь он работает, но первая страница по-прежнему повторяется дважды, есть идеи, как это исправить, и спасибо за ваше время.

Martin T 22.05.2019 12:46

Другие вопросы по теме