迭代无限页面滚动

iterating over infinite page scrolls

我正在从这个网站抓取数据 https://www.heiminfo.ch/institutionen,下面是我的代码

import pandas  as  pd
import requests
import time
import csv
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from time import sleep
from random import randint
from bs4 import BeautifulSoup
from selenium import webdriver as wb
driver=wb.Chrome('chromedriver.exe')
driver.maximize_window()
driver.get(' https://www.heiminfo.ch/institutionen')
ton=driver.find_element_by_xpath('/html/body/div[1]/main/div/section/form/div[1]/div[3]/div/button[3]').click();

我的抓取器运行良好,但它一直在抓取已经抓取的数据。该网站有一个图标按钮,但它似乎也有无限滚动功能,因为每次您单击该图标按钮时,它都会比之前的项目多加载 5 个项目。

time.sleep(2)
h=[]
while True:
totals=int('1589')
soup=BeautifulSoup(driver.page_source, 'html.parser')
item=soup.find_all(class_="institutions")
for a in item:
    lsh=a.find_all(class_="name-and-addition")
for e in lsh:
    h.append(e.text.strip('\n'))
    data=pd.DataFrame(zip(h), columns=['Adult Homes'])
    print(data)
try:
    driver.find_element_by_xpath("/html/body/div[1]/main/div/div/section/div[3]/div[2]/button/span[2]").click();
except:
    if(len(data)==totals):
        break

我的数据输出:

                             Adult Homes
0  Stiftung Emera \nAteliers bois de feu
                             Adult Homes
0  Stiftung Emera \nAteliers bois de feu
1       Falkenstein \nBSB Pflegezentrum 
                             Adult Homes
0  Stiftung Emera \nAteliers bois de feu
1       Falkenstein \nBSB Pflegezentrum 
2                         La Fontanelle 
                             Adult Homes
0  Stiftung Emera \nAteliers bois de feu
1       Falkenstein \nBSB Pflegezentrum 
2                         La Fontanelle 
3         Alters- und Pflegeheim Inseli 
                             Adult Homes
0  Stiftung Emera \nAteliers bois de feu
1       Falkenstein \nBSB Pflegezentrum 
2                         La Fontanelle 
3         Alters- und Pflegeheim Inseli 
4      SGIPA Atelier protégé Saint-Jean 
                             Adult Homes
0  Stiftung Emera \nAteliers bois de feu
1       Falkenstein \nBSB Pflegezentrum 
2                         La Fontanelle 
3         Alters- und Pflegeheim Inseli 
4      SGIPA Atelier protégé Saint-Jean 
5          Tertianum Residenza Al Parco 
                                         Adult Homes
0              Stiftung Emera \nAteliers bois de feu
1                   Falkenstein \nBSB Pflegezentrum 
2                                     La Fontanelle 
3                     Alters- und Pflegeheim Inseli 
4                  SGIPA Atelier protégé Saint-Jean 
5                      Tertianum Residenza Al Parco 
6  SUHRENTAL Alterszentrum \nRegionales Alterszen...
                                         Adult Homes
0              Stiftung Emera \nAteliers bois de feu
1                   Falkenstein \nBSB Pflegezentrum 
2                                     La Fontanelle 
3                     Alters- und Pflegeheim Inseli 
4                  SGIPA Atelier protégé Saint-Jean 
5                      Tertianum Residenza Al Parco 
6  SUHRENTAL Alterszentrum \nRegionales Alterszen...
7                       Alters- und Pflegeheim Fahr 
                                         Adult Homes
0              Stiftung Emera \nAteliers bois de feu
1                   Falkenstein \nBSB Pflegezentrum 
2                                     La Fontanelle 
3                     Alters- und Pflegeheim Inseli 
4                  SGIPA Atelier protégé Saint-Jean 
5                      Tertianum Residenza Al Parco 
6  SUHRENTAL Alterszentrum \nRegionales Alterszen...
7                       Alters- und Pflegeheim Fahr 
8  Stiftung Alters- und Pflegeheim Nidwalden \nNÄ...
                                         Adult Homes
0              Stiftung Emera \nAteliers bois de feu
1                   Falkenstein \nBSB Pflegezentrum 
2                                     La Fontanelle 
3                     Alters- und Pflegeheim Inseli 
4                  SGIPA Atelier protégé Saint-Jean 
5                      Tertianum Residenza Al Parco 
6  SUHRENTAL Alterszentrum \nRegionales Alterszen...
7                       Alters- und Pflegeheim Fahr 
8  Stiftung Alters- und Pflegeheim Nidwalden \nNÄ...
9  Stiftung Mühlehalde mobile Begleitetes Wohnen ...
                                          Adult Homes
0               Stiftung Emera \nAteliers bois de feu
1                    Falkenstein \nBSB Pflegezentrum 
2                                      La Fontanelle 
3                      Alters- und Pflegeheim Inseli 
4                   SGIPA Atelier protégé Saint-Jean 
5                       Tertianum Residenza Al Parco 
6   SUHRENTAL Alterszentrum \nRegionales Alterszen...
7                        Alters- und Pflegeheim Fahr 
8   Stiftung Alters- und Pflegeheim Nidwalden \nNÄ...
9   Stiftung Mühlehalde mobile Begleitetes Wohnen ...
10                                    Wohnheim Bachs 
                                          Adult Homes

我怎样才能在不返回我已经抓取的内容的情况下抓取它?

您可以执行以下操作来获取前 100 个左右的元素。

driver.get("https://www.heiminfo.ch/institutionen")
wait=WebDriverWait(driver, 10)
total=100
h=[]
while True:
    try:   
        item=driver.find_element_by_class_name('institutions')
        lsh=item.find_elements_by_class_name("name-and-addition")
        if(len(lsh)>=total):
            for e in lsh[:total]:
                h.append(e.text.strip('\n'))
                data=pd.DataFrame(zip(h), columns=['Adult Homes'])
            print(data)
            break
        wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".next.btn"))).click()
        time.sleep(5)
    except Exception as e:
        print(e)
        break

产出

                                   Adult Homes
0                     Birsfelden Alterszentrum
1   Alters- und Pflegeheim Bethania im Stedtli
2                       Pflegezentrum Ennetsee
3                          Wohnheim Zürichberg
4      Casa Güpf AG\nBetreutes Wohnen im Alter
..                                         ...
95             Psychiatrisches Zentrum Herisau
96             VESO Wohnen für Mutter und Kind
97                        Zur Rose Reichenburg
98                     Résidence Les Trémières
99                       Alterssiedlung Bodmer