Web Scraper продолжает повторять первую страницу вместо нескольких страниц - PullRequest
1 голос
/ 22 мая 2019

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

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

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() 

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

1 Ответ

1 голос
/ 22 мая 2019

Что ж, в вашем цикле есть довольно очевидная ошибка, вы не обновляете содержимое переменной 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")

    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...