1

I am trying to scrape all the href of the ads posted on IMMOWEB under this link. The URLs are loaded by Javascript. I am using HTMLSession but couldn't obtain my results. Here is my code:


url = 'https://www.immoweb.be/en/search/apartment/for-sale?countries=BE&isNewlyBuilt=false&maxBedroomCount=3&maxPrice=200000&maxSurface=130&minBedroomCount=1&minPrice=100000&minSurface=65&postalCodes=2000,2018,2060,2140,2170,2600,2610,2627,2640,2650,2660,2845,2850,2900,2980&page=1&orderBy=newest&card=9267356'

sessions = HTMLSession()  
r = sessions.get(url)  
r.html.render()  
soup = BeautifulSoup(r.content, "html.parser")  
print (soup)  

Outputs required:

https://www.immoweb.be/en/classified/apartment/for-sale/antwerpen-merksem/2170/9268787?searchId=606f2c6d4c669  
https://www.immoweb.be/en/classified/apartment/for-sale/merksem/2170/9268390?searchId=606f2c6d4c669
'And other hrefs'

1 Answer 1

2

The URLs are constructed dynamically via JavaScript. But you can load the ID of every property and construct it manually (following the URL will redirect to correct URL):

import re
import json
import requests
from html import unescape


url = "https://www.immoweb.be/en/search/apartment/for-sale?countries=BE&isNewlyBuilt=false&maxBedroomCount=3&maxPrice=200000&maxSurface=130&minBedroomCount=1&minPrice=100000&minSurface=65&postalCodes=2000,2018,2060,2140,2170,2600,2610,2627,2640,2650,2660,2845,2850,2900,2980&page=1&orderBy=newest&card=9267356"

html_doc = requests.get(url).text
data = json.loads(unescape(re.search(r":results='(.*?)'", html_doc).group(1)))

# uncomment to print all data:
# print(json.dumps(data, indent=4))

for p in data:
    print("https://www.immoweb.be/en/classified/{}".format(p["id"]))

Prints:

https://www.immoweb.be/en/classified/9268787
https://www.immoweb.be/en/classified/9268390
https://www.immoweb.be/en/classified/9268389
https://www.immoweb.be/en/classified/9268360
https://www.immoweb.be/en/classified/9267356
https://www.immoweb.be/en/classified/9266168
https://www.immoweb.be/en/classified/9264424
https://www.immoweb.be/en/classified/9264140
https://www.immoweb.be/en/classified/9264032
https://www.immoweb.be/en/classified/9263981
https://www.immoweb.be/en/classified/9263142
https://www.immoweb.be/en/classified/9261903
https://www.immoweb.be/en/classified/9261838
https://www.immoweb.be/en/classified/9261546
https://www.immoweb.be/en/classified/9261343
https://www.immoweb.be/en/classified/9261328
https://www.immoweb.be/en/classified/9261133
https://www.immoweb.be/en/classified/9260764
https://www.immoweb.be/en/classified/9260370
https://www.immoweb.be/en/classified/9214008
https://www.immoweb.be/en/classified/9259711
https://www.immoweb.be/en/classified/9258900
https://www.immoweb.be/en/classified/9258810
https://www.immoweb.be/en/classified/9258199
https://www.immoweb.be/en/classified/9258195
https://www.immoweb.be/en/classified/9258183
https://www.immoweb.be/en/classified/9258179
https://www.immoweb.be/en/classified/9215058
https://www.immoweb.be/en/classified/9256793
https://www.immoweb.be/en/classified/9256422
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.