from pyvirtualdisplay import Display from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import math import urllib.request from bs4 import BeautifulSoup import re high=1200 low=1000 inc=20 #i=2 l = [i for i in range(1,int(((high-low)/inc)))] #print(l) for i in l: gap="https://properties.movebubble.com/find-homes-to-rent?min-price="+str(low+(inc*i))+"&max-price="+str((low+(inc*i))+inc)+"&bedrooms=0%2C1" # print(gap) page=BeautifulSoup(urllib.request.urlopen(gap).read(), 'html.parser') totalItems=page.select_one("h1[class=total-results-text]").text totalItems=int(re.sub('[^0-9]','', totalItems)) # print(totalItems) #totalItems=800 maxPage=math.ceil(totalItems/20) pages=[str(i) for i in range(1,int(maxPage) + 1)] #pages=range(1,10,100) soups = [] for i in pages: soup=BeautifulSoup(urllib.request.urlopen(gap+"&page="+i).read(), 'html.parser') soup2=soup.findAll("div", { "class" : "property-card" }) soups.extend(soup2) for i in range(0,len(soups)): item=BeautifulSoup(str(soups[i]), 'html.parser') url=item.find('div',{'class': 'property-card-slider rsDefault'}).get('property-link') page=BeautifulSoup(urllib.request.urlopen("https://properties.movebubble.com"+url).read(), 'html.parser') title=page.find('h1',{'class':'strong-custom'}).text.replace(",", "").replace(" ", "") price=page.find('strong',{'class':'property-page__price--value'}).text.replace(" ", "") price2=re.sub('[,£]', '', price).strip() price3=price2 gmap=page.find('iframe', {'class' : 'property-page__map-frame'}).get('src') lat=gmap.split(",",1)[0].split('=',1)[1] lon=gmap.split(",",1)[1].split('&',1)[0] print((title+','+price3+','+lat+','+lon+','+url[-7:]))