I'm trying to click load more button several times using selenium, however I cannot click load more button (it is even not a button...)
When I try to click it, it shows error element click intercepted: Element is not clickable at point
even after I explicitly code wait.until(EC.element_to_be_clickable
)
I wonder what can be wrong with my code. The code I'm using is
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver
import time
url = "https://www.architectural-review.com/buildings/house"
options = webdriver.ChromeOptions()
driver = webdriver.Chrome()
driver.get(url)
# accept cookies
wait0 = WebDriverWait(driver, 10)
cookie_button = wait0.until(EC.element_to_be_clickable((By.XPATH,'/html/body/div[1]/div/div[6]/button[1]')))
cookie_button.click()
print("loading more projects ...")
count=5
wait = WebDriverWait(driver, 10)
element = wait.until(EC.element_to_be_clickable((By.XPATH,'/html/body/div[2]/div/div[3]/section[5]/div/div[5]/a')))
print(element)
print("now element is clickable")
while count>1:
element.click();
count-=1
print(count)
and the HTML looks like (it's not a button, not sure whether this matters)
<div >
<a href="#" data-term-id="869" data-block-id="7" data-offset="18" data-load-number="4" data-resulting- data-exclude="MzE4Mzk5LDMxODM2MCwzMTc2MDAsNjUyNjEsNjQzMTMsNjQzMTgsNjQyNzMsNjMyNTc=">Load More </a>
</div>
CodePudding user response:
This is somewhat tricky.
The "Load more" button is initially out of the screen here, so you need to scroll the page in order to click that button. But when you scroll this page it scrolls more than needed so the "Load more" button appears out of the screen again, so this time you will have to scroll back :)
"Load more" button presents on the page even when nothing to load more. In this case this button just becomes invisible. So, to stop scrolling you need to check style
attribute of that element.
Also, you need to improve your locators. Very long absolute XPaths are extremely breakable and not reliable.
The following code works!
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
options = Options()
options.add_argument("start-maximized")
webdriver_service = Service('C:\webdrivers\chromedriver.exe')
driver = webdriver.Chrome(options=options, service=webdriver_service)
wait = WebDriverWait(driver, 5)
url = "https://www.architectural-review.com/buildings/house"
driver.get(url)
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.cmplz-btn.cmplz-accept'))).click()
while True:
load_more = wait.until(EC.presence_of_element_located((By.CLASS_NAME, "cpb-bottom-more-news-link")))
load_more.location_once_scrolled_into_view
time.sleep(0.4)
driver.execute_script("window.scrollBy(0, arguments[0]);", -300)
time.sleep(0.4)
displayed = load_more.get_attribute("style")
if "none" in displayed:
break
driver.execute_script("arguments[0].click();", load_more)
CodePudding user response:
Here is a way of getting that information without Selenium (which is primarily a testing tool, and should be the last call for a web scraping venture, when all else fails):
import requests
from bs4 import BeautifulSoup as bs
import base64
from tqdm import tqdm ## if using Jupyter, do `from tqdm.notebook import tqdm`
import pandas as pd
headers = {
'referer': 'https://www.architectural-review.com/buildings/house',
'x-requested-with': 'XMLHttpRequest',
'accept-language': 'en-US,en;q=0.9',
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.79 Safari/537.36'
}
s = requests.Session()
s.headers.update(headers)
big_list = []
for x in tqdm(range(0, 50, 4)):
url = f'https://www.architectural-review.com/wp-admin/admin-ajax.php?action=lazy-load&offset={x}&term_id=869&block_id=7&class=fourth-post&load_number=4&exclude=MzE4Mzk5LDMxODM2MCwzMTc2MDAsNjUyNjEsNjQzMTMsNjQzMTgsNjQyNzMsNjMyNTcsMzI2NzE2LDMyNjY5OSwzNDY3MSwzMjg3MzgsMTc5ODY1LDE3OTgzNSwxNzk3NjgsMTc5NTk4LDg3NDgyLDY3Mjk2LDY1NjIwLDYzNjQwLDYzMzgyLDYzMzQzLDYzMjk3LDYyOTMxLDYyOTI1LDYyMTA2LDYwOTE4LDU3MjMyLDU3MTE0LDU3MTAzLDU3MDg4LDU3MDgxLDU3MDc1LDU2OTkzLDU2OTc4'
r = s.get(url)
soup = bs(base64.b64decode(r.json()['body']), 'html.parser')
houses = soup.select('div[]')
for house in houses:
title = house.select_one('h2').get_text(strip=True)
author = house.select_one('span[]').get_text(strip=True)
url = house.select_one('h2').parent.get('href')
big_list.append((title, author, url))
df = pd.DataFrame(big_list, columns=['title', 'author', 'url'])
print(df)
Result in terminal:
100%
13/13 [00:13<00:00, 1.10it/s]
title author url
0 Hlöðuberg artist studio in Skarðsströnd, Iceland by Studio Bua Olivia Wynne Houck https://www.architectural-review.com/awards/ar-house/hloduberg-artist-studio-in-skardsstrond-iceland-by-studio-bua
1 Weekend house on Salamis Island, Greece by AREA (Architecture Research Athens) Dorette Panagiotopoulou https://www.architectural-review.com/awards/ar-house/weekend-house-on-salamis-island-greece-by-area-architecture-research-athens
2 Beaconsfield House in Perth, Australia by Simon Pendal Architect Rachael Bernstone https://www.architectural-review.com/awards/ar-house/beaconsfield-house-in-perth-australia-by-simon-pendal-architect
3 House in Kanazawa in Ishikawa Prefecture, Japan by Shota Nakanishi Architects Danielle Demetriou https://www.architectural-review.com/awards/ar-house/house-in-kanazawa-in-ishikawa-prefecture-japan-by-shota-nakanishi-architects
4 House on Hamburgö in Bohüslan, Sweden by Manthey Kula Rasmus Wærn https://www.architectural-review.com/awards/ar-house/house-on-hamburgo-in-bohuslan-sweden-by-manthey-kula
5 El Garaje in Madrid, Spain by Nomos Miguel Fernández-Galiano https://www.architectural-review.com/awards/ar-house/el-garaje-in-madrid-spain-by-nomos
6 Water Tower in Castle Acre, UK by Tonkin Liu Nile Bridgeman https://www.architectural-review.com/awards/new-into-old/water-tower-in-castle-acre-uk-by-tonkin-liu
7 BAAN 38 in Bangkok, Thailand by Junsekino Architect and Design Madeleine Weavers https://www.architectural-review.com/awards/new-into-old/baan-38-in-bangkok-thailand-by-junsekino-architect-and-design
8 Yamato House in Nara, Japan by Tadashi Yoshimura Architects Nancy (Yao) Ji https://www.architectural-review.com/places/japan/yamato-house-in-nara-japan-by-tadashi-yoshimura-architects
9 Baltrasna House in Dublin, Ireland by Ryan W Kennihan Architects Lisa Godson https://www.architectural-review.com/places/ireland/baltrasna-house-in-dublin-ireland-by-ryan-w-kennihan-architects
10 Couldrey House in Brisbane, Australia by HNNA and Peter Besley Kirsty Volz https://www.architectural-review.com/awards/ar-house/couldrey-house-in-brisbane-australia-by-hnna-and-peter-besley
11 Big Space, Little Space in Buffalo, United States by Davidson Rafailidis Raymund Ryan https://www.architectural-review.com/awards/ar-house/big-space-little-space-in-buffalo-united-states-by-davidson-rafailidis
12 Home grown: Arigho Larmour Wheeler Architects, Ireland Marwa El Mubark https://www.architectural-review.com/awards/ar-emerging/home-grown-arigho-larmour-wheeler-architects-ireland
13 Polished conversation: Clancy Moore, Ireland Lili Zarzycki https://www.architectural-review.com/awards/ar-emerging/polished-conversation-clancy-moore-ireland
14 Solo House, Matarraña, Spain, by Pezo von Ellrichshausen AR Editors https://www.architectural-review.com/buildings/solo-house-matarrana-spain-by-pezo-von-ellrichshausen
15 Solo House, Matarraña, Spain, by OFFICE KGDVS AR Editors https://www.architectural-review.com/buildings/solo-house-matarrana-spain-by-office-kgdvs
16 Holiday pay: vacation homes by Living Architecture in the U.K. and Solo Houses in Matarraña, Spain Manon Mollard https://www.architectural-review.com/buildings/holiday-pay-vacation-homes-by-living-architecture-in-the-u-k-and-solo-houses-in-matarrana-spain
17 Shadow play: Hawthorn House, Victoria, Australia, by Edition Office Samson Séyí Famusan https://www.architectural-review.com/awards/ar-house/shadow-play-hawthorn-house-victoria-australia-by-edition-office
18 Balancing blocks: Casa St Cugat, Catalonia, Spain, Camps Felip Arquitecturia Siufan Adey https://www.architectural-review.com/awards/ar-house/balancing-blocks-casa-st-cugat-catalonia-spain-camps-felip-arquitecturia
19 Spotlight: house in a garden, London, UK, Gianni Botsford Architects Nile Bridgeman https://www.architectural-review.com/awards/ar-house/spotlight-house-in-a-garden-london-uk-gianni-botsford-architects
20 Light room: photographer’s house, London, UK, Hugh Strange Architects Shukri Sultan https://www.architectural-review.com/awards/ar-house/light-room-photographers-house-london-uk-hugh-strange-architects
21 Ascending order: Loop Terrace, Kobe, Japan, Tomohiro Hata Architect and Associates Thomas Aquilina https://www.architectural-review.com/awards/ar-house/ascending-order-loop-terrace-kobe-japan-tomohiro-hata-architect-and-associates
22 Holding the line: The Longhouse, Daylesford, Australia, by Partners Hill Josh Fenton https://www.architectural-review.com/awards/ar-house/holding-the-line-the-longhouse-daylesford-australia-by-partners-hill
23 Slice of life: the Cut, Koganecho, Japan, by Persimmon Hills Architects Aoi Phillips https://www.architectural-review.com/awards/ar-house/slice-of-life-the-cut-koganecho-japan-by-persimmon-hills-architects
24 Brick house: Casa Volta, Oaxaca, Mexico by Ambrosi Etchegaray Marwa El Mubark https://www.architectural-review.com/awards/ar-house/brick-house-casa-volta-oaxaca-mexico-by-ambrosi-etchegaray
25 Fringe benefits: Song house, Shanghai, China, by AZL Architects Harry den Hartog https://www.architectural-review.com/awards/ar-house/fringe-benefits-song-house-shanghai-china-by-azl-architects
26 Stepping stone: Hamra Studio residence, Gotland, Sweden, by Collectif Encore Lili Zarzycki https://www.architectural-review.com/awards/ar-house/stepping-stone-hamra-studio-residence-gotland-sweden-by-collectif-encore
27 Cut a dash: Hollybrook Grove in Dublin, Ireland, by David Leech Architects Eleanor Beaumont https://www.architectural-review.com/awards/ar-house/cut-a-dash-hollybrook-grove-in-dublin-ireland-by-david-leech-architects
28 Noreile Breen: ‘I am from this place, I have a responsibility to it’ Rupert Bickersteth https://www.architectural-review.com/archive/noreile-breen-i-am-from-this-place-i-have-a-responsibility-to-it
29 Footprints in time: House in Kamitomii, Kurashiki, Japan, by General Design Co Kaz Yoneda https://www.architectural-review.com/awards/ar-house/footprints-in-time-house-in-kamitomii-kurashiki-japan-by-general-design-co
30 Domestic bliss: houses in Dublin by Clancy Moore, TAKA, Ryan W Kennihan Architects and Arigho Larmour Wheeler Architects Eleanor Beaumont https://www.architectural-review.com/buildings/domestic-bliss-houses-in-dublin-by-clancy-moore-taka-ryan-w-kennihan-architects-and-arigho-larmour-wheeler-architects
31 Travel agency: Irene Pérez, TEd'A Arquitectes, Spain Lili Zarzycki https://www.architectural-review.com/buildings/travel-agency-irene-perez-teda-arquitectes-spain
32 Impractical genius: Jørn Utzon's Sydney Opera House and Can Lis, Mallorca Gerard Reinmuth https://www.architectural-review.com/buildings/impractical-genius-jorn-utzons-sydney-opera-house-and-can-lis-mallorca
33 Nature nurtured: Carla Juaçaba Studio, Brazil Manon Mollard https://www.architectural-review.com/today/nature-nurtured-carla-juacaba-studio-brazil
34 Front of house: T O B Architect, Ireland Eleanor Beaumont https://www.architectural-review.com/buildings/front-of-house-t-o-b-architect-ireland
35 Hôtel Wolfers: Henry van de Velde's frozen ruin Eleanor Beaumont https://www.architectural-review.com/buildings/hotel-wolfers-henry-van-de-veldes-frozen-ruin
36 Shadow box: House V-D, Ghent, by Marie-José Van Hee Architecten Helen Thomas https://www.architectural-review.com/buildings/shadow-box-house-v-d-ghent-by-marie-jose-van-hee-architecten
37 Inside the Box: Kokoon by Helsinki’s Aalto University Wood Program Students, Finland George Kafka https://www.architectural-review.com/awards/ar-house/inside-the-box-kokoon-by-helsinkis-aalto-university-wood-program-students-finland
38 Pioneer Spirit: Casa Bruma by Fernanda Canales and Claudia Rodríguez in Mexico Lili Carr https://www.architectural-review.com/awards/ar-house/pioneer-spirit-casa-bruma-by-fernanda-canales-and-claudia-rodriguez-in-mexico
39 Overarching Craft: Mesura's house extension in Elche, Spain Rafael Gómez-Moriana https://www.architectural-review.com/awards/ar-house/overarching-craft-mesuras-house-extension-in-elche-spain
40 Planes and plants: Vo Trong Nghia Architects’ Binh House in Ho Chi Minh City Josh Comaroff https://www.architectural-review.com/awards/ar-house/planes-and-plants-vo-trong-nghia-architects-binh-house-in-ho-chi-minh-city
41 Building in potential: house in Nobeoka, Japan by Schemata Architects Jan Vranovsk√Ĺ https://www.architectural-review.com/awards/ar-house/building-in-potential-house-in-nobeoka-japan-by-schemata-architects
42 Veiled in Secrecy: The Habitat for Orphan Girls by ZAV Architects, Iran Mehr Shafiei https://www.architectural-review.com/awards/ar-house/veiled-in-secrecy-the-habitat-for-orphan-girls-by-zav-architects-iran
43 Overarching ambition: Two houses, Oropesa, Spain by Paredes Pedrosa Arquitectos Andrew Ayers https://www.architectural-review.com/buildings/overarching-ambition-two-houses-oropesa-spain-by-paredes-pedrosa-arquitectos
44 Winds of change: Casa de Los Vientos in Cádiz, Spain by José Luis Muñoz Manon Mollard https://www.architectural-review.com/awards/ar-emerging/winds-of-change-casa-de-los-vientos-in-cadiz-spain-by-jose-luis-muñoz
45 Economy class: Mrs Fan’s Plugin House in Beijing, China by People’s Architecture Office Manon Mollard https://www.architectural-review.com/awards/ar-emerging/economy-class-mrs-fans-plugin-house-in-beijing-china-by-peoples-architecture-office
46 Sense of an ending: Red House in London by 31/44 Architects Eleanor Beaumont https://www.architectural-review.com/awards/ar-emerging/sense-of-an-ending-red-house-in-london-by-31-44-architects
47 Dachaland: the Russian dacha DK-CM https://www.architectural-review.com/buildings/dachaland-the-russian-dacha
48 Iturbide Studio in Mexico City by Taller Mauricio Rocha Gabriela Carrillo Michael Webb https://www.architectural-review.com/buildings/iturbide-studio-in-mexico-city-by-taller-mauricio-rocha-gabriela-carrillo
49 A host of oasts: Caring Wood by James Macdonald Wright with Niall Maxwell Jay Merrick https://www.architectural-review.com/buildings/a-host-of-oasts-caring-wood-by-james-macdonald-wright-with-niall-maxwell
50 Coogee House, Sydney, Australia by Chenchow Little Architects Eleanor Beaumont https://www.architectural-review.com/awards/ar-house/coogee-house-sydney-australia-by-chenchow-little-architects
51 The Captain's House, Fuzhou, China by Vector Architects Eleanor Beaumont https://www.architectural-review.com/awards/ar-house/the-captains-house-fuzhou-china-by-vector-architects
That 50
limit is arbitrary, you can go higher and get more properties.
See relevant documentation for pandas: https://pandas.pydata.org/docs/
Also for Requests: https://requests.readthedocs.io/en/latest/
And for tqdm, visit https://pypi.org/project/tqdm/