Web抓取工具不断重复第一页而不是重复多页

时间:2019-05-22 09:54:00

标签: python-3.x web-scraping pagination

我有这个一直在努力并且完美的网络刮板。我已经请求有关此代码的其他帮助,但是这次我还没有找到解决此问题的任何帮助。

我一直在尝试根据网络上的一些教程来重建代码,但是工作不多,我濒临开始其他事情的开始,因为如果不想这样做,不想浪费太多时间会工作。

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 个答案:

答案 0 :(得分: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")

    ...